From 5f1ed7ab60f8d2e049a8ee668f14dffd639c0bbe Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Fri, 5 Nov 2021 21:29:32 -0400 Subject: [PATCH] decomp: decompile `*-obs` files (#856) * decomp: mostly finish `cam-master` * decomp/scripts: lots of work in cam-states * stash * Merge remote-tracking branch 'water111/master' into decomp/camera-master Updated submodule third-party/googletest * decompiler: Add support for non power of 2 offsets for inline arr access * decomp: mostly finish `cam-states` need to fix a macro issue * blocked: `cam-master` decompiler crash when adding casts * decomp: finish `cam-states-dbg` * decomp: mostly finish `pov-camera` with the exception of joint-related code * decomp: `cam-debug` finished decompiling, no way does this compile yet though * decomp: considerable work done in `cam-layout` * decomp: `cam-layout` almost done! * decomp: `pov-camera` finished, TC tests will fail for now * decomp: working on resolving issues * decomp: cam-layout decompiling * fixing more issues in cam-master...one event handler remains * skip problematic function in `cam-master` for now * gsrc: update res macros * decomp: finish `cam-states` * decomp: giving up on `cam-debug` * tests: allow skipping state handlers in ref tests * decomp: working through cam-layout bugs * decomp: allow for shifting non-integers * decomp: finalize `cam-layout` and `cam-master` * decomp: finalize `cam-states` * cleanup: bi-annual formatting of the casting files * formatting * decomp: start working on beach-obs * blocked: `beach-obs` mostly finished, but handle cast issues and unknown `prebind` func signature * blocked: `villagep-obs` done, `s6` not being referred to as `self` * decomp: finish `citadel-obs` * decomp: finish `darkcave-obs` * blocked: need to allow `hud-h` to decompile properly (#f as static pointer) * decomp: finish `jungle-obs` * decomp: finish `village-obs` * blocked: `misty-obs` handle cast issues * decomp: finish `village2-obs` * decomp: 1 function left in `swamp-obs`, particle related -- maybe we know now? * decomp: finish `swamp-obs` * blocked: `maincave-obs` handle casts * decomp: finish `sunken-obs` * blocked: `rolling-obs` handle casts and hud-parts * decomp: finish `firecanyon-obs` * decomp: finish `ogre-obs` * blocked: `village3-obs` gives up type analysis! * blocked: `snow-obs` has hud-parts and handle casts code * decomp: finish `snow-flutflut-obs` * blocked: `lavatube-obs` has s6-1 issue * blocked: `title-obs` handle cast issues * fixed post merge problems * decomp: finish `jungleb-obs` * blocked: `training-obs` has `s6-1` issue * fix type consistency * scripts: Extend update script to handle the game-text-id enum as well * git: Update git attributes to effectively halve PR burden * fixed `sound-play-by-name` signature * fix particle definitions in firecanyon-obs * fix func signature in racer-states * update ref tests * tests: update current ref tests * tests: add `joint` to ref-tests * tests: add `process-drawable` to ref-tests * updated gsrc * add back manual fix * address most feedback, update source files * get rid of forward declarations in `darkcave-obs` Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com> --- .gitattributes | 3 + .github/workflows/windows-workflow.yaml | 2 +- Taskfile.yml | 2 +- decompiler/config/all-types.gc | 6310 +++++------------ .../anonymous_function_types.jsonc | 14 +- .../config/jak1_ntsc_black_label/hacks.jsonc | 2 - .../jak1_ntsc_black_label/label_types.jsonc | 66 + .../stack_structures.jsonc | 593 +- .../jak1_ntsc_black_label/type_casts.jsonc | 579 ++ .../jak1_ntsc_black_label/var_names.jsonc | 19 + goal_src/build/all_files.gc | 4 +- goal_src/engine/ambient/ambient.gc | 12 +- goal_src/engine/ambient/mood.gc | 8 +- goal_src/engine/camera/cam-master.gc | 4 - goal_src/engine/camera/camera.gc | 3 + goal_src/engine/camera/pov-camera-h.gc | 35 +- goal_src/engine/camera/pov-camera.gc | 4 +- goal_src/engine/collide/collide-touch-h.gc | 10 +- goal_src/engine/entity/entity.gc | 3 + goal_src/engine/game/crates.gc | 38 + goal_src/engine/game/effect-control.gc | 4 +- goal_src/engine/game/game-info.gc | 16 +- goal_src/engine/game/generic-obs.gc | 24 + goal_src/engine/game/main.gc | 8 +- goal_src/engine/game/projectiles.gc | 20 +- goal_src/engine/gfx/water/water-h.gc | 109 +- goal_src/engine/sound/gsound.gc | 70 +- goal_src/engine/target/target-part.gc | 4 +- goal_src/engine/ui/hud-classes.gc | 4 +- goal_src/engine/ui/progress/progress.gc | 200 +- goal_src/engine/ui/text-h.gc | 73 +- goal_src/engine/util/smush-control-h.gc | 1 + goal_src/engine/util/sync-info-h.gc | 8 +- goal_src/levels/beach/lurkerpuppy.gc | 8 +- goal_src/levels/citadel/citadel-obs.gc | 2462 +++++++ goal_src/levels/citadel/citb-drop-plat-CIT.gc | 8 +- goal_src/levels/common/basebutton.gc | 32 +- goal_src/levels/common/baseplat.gc | 36 +- goal_src/levels/common/battlecontroller.gc | 4 +- goal_src/levels/common/dark-eco-pool.gc | 23 +- goal_src/levels/common/plat-button.gc | 12 +- goal_src/levels/common/plat.gc | 4 +- goal_src/levels/common/rigid-body.gc | 8 +- goal_src/levels/common/sharkey.gc | 12 +- goal_src/levels/common/ticky.gc | 6 +- goal_src/levels/common/water-anim.gc | 81 +- goal_src/levels/darkcave/darkcave-obs.gc | 366 +- goal_src/levels/finalboss/final-door.gc | 8 +- goal_src/levels/finalboss/green-eco-lurker.gc | 16 +- goal_src/levels/finalboss/robotboss-weapon.gc | 16 +- goal_src/levels/finalboss/robotboss.gc | 16 +- goal_src/levels/firecanyon/firecanyon-obs.gc | 925 +++ goal_src/levels/jungle/bouncer.gc | 4 +- goal_src/levels/jungle/fisher-JUN.gc | 20 +- goal_src/levels/jungle/jungle-obs.gc | 2118 ++++++ goal_src/levels/jungleb/aphid.gc | 8 +- goal_src/levels/jungleb/jungleb-obs.gc | 732 ++ goal_src/levels/jungleb/plat-flip.gc | 8 +- goal_src/levels/maincave/cavecrystal-light.gc | 16 +- goal_src/levels/maincave/maincave-part.gc | 4 +- .../levels/maincave/mother-spider-proj.gc | 12 +- goal_src/levels/maincave/spiderwebs.gc | 4 +- goal_src/levels/misty/misty-conveyor.gc | 12 +- goal_src/levels/misty/misty-warehouse.gc | 4 +- goal_src/levels/misty/muse.gc | 4 +- goal_src/levels/ogre/ogre-obs.gc | 2411 +++++++ .../racer-states-FIC-LAV-MIS-OGR-ROL.gc | 62 +- goal_src/levels/snow/snow-flutflut-obs.gc | 1518 ++++ goal_src/levels/sunken/qbert-plat.gc | 16 +- goal_src/levels/sunken/square-platform.gc | 4 +- goal_src/levels/sunken/sunken-obs.gc | 812 ++- goal_src/levels/sunken/sunken-water.gc | 12 +- goal_src/levels/sunken/wall-plat.gc | 12 +- goal_src/levels/swamp/swamp-obs.gc | 1498 ++++ goal_src/levels/training/training-part.gc | 4 +- goal_src/levels/village1/assistant.gc | 8 +- goal_src/levels/village1/fishermans-boat.gc | 4 +- goal_src/levels/village1/village-obs-VI1.gc | 1346 ++++ goal_src/levels/village1/village1-part2.gc | 4 +- .../levels/village2/assistant-village2.gc | 8 +- goal_src/levels/village2/village2-obs.gc | 2670 ++++++- goal_src/levels/village2/village2-part.gc | 4 +- scripts/update-goal-src.py | 41 +- sunken-obs.manual_restore_reminder | 0 test.sh | 2 +- .../reference/engine/ambient/ambient_REF.gc | 28 +- .../reference/engine/ambient/mood_REF.gc | 8 +- .../reference/engine/anim/joint_REF.gc | 1929 +++++ .../engine/camera/pov-camera-h_REF.gc | 2 +- .../reference/engine/camera/pov-camera_REF.gc | 4 +- .../engine/collide/collide-touch-h_REF.gc | 6 +- .../engine/draw/process-drawable_REF.gc | 1486 ++++ .../engine/game/effect-control_REF.gc | 4 +- .../reference/engine/game/game-info_REF.gc | 24 +- .../reference/engine/game/main_REF.gc | 36 +- .../reference/engine/game/projectiles_REF.gc | 20 +- .../reference/engine/sound/gsound_REF.gc | 24 +- .../engine/target/target-part_REF.gc | 8 +- .../reference/engine/ui/hud-classes_REF.gc | 6 +- .../engine/util/smush-control-h_REF.gc | 1 + .../reference/engine/util/sync-info-h_REF.gc | 2 + .../reference/levels/beach/lurkerpuppy_REF.gc | 8 +- .../levels/citadel/citadel-obs_REF.gc | 2762 ++++++++ .../levels/citadel/citb-drop-plat-CIT_REF.gc | 8 +- .../reference/levels/common/basebutton_REF.gc | 32 +- .../reference/levels/common/baseplat_REF.gc | 36 +- .../levels/common/battlecontroller_REF.gc | 4 +- .../levels/common/plat-button_REF.gc | 14 +- .../reference/levels/common/plat_REF.gc | 6 +- .../reference/levels/common/rigid-body_REF.gc | 8 +- .../reference/levels/common/sharkey_REF.gc | 12 +- .../reference/levels/common/ticky_REF.gc | 4 +- .../reference/levels/common/water-anim_REF.gc | 4 +- .../levels/darkcave/darkcave-obs_REF.gc | 389 + .../levels/finalboss/final-door_REF.gc | 8 +- .../levels/finalboss/green-eco-lurker_REF.gc | 18 +- .../levels/finalboss/robotboss-h_REF.gc | 2 +- .../levels/finalboss/robotboss-misc_REF.gc | 2 +- .../levels/finalboss/robotboss-weapon_REF.gc | 16 +- .../levels/finalboss/robotboss_REF.gc | 16 +- .../levels/firecanyon/firecanyon-obs_REF.gc | 960 +++ .../reference/levels/jungle/bouncer_REF.gc | 4 +- .../reference/levels/jungle/fisher-JUN_REF.gc | 20 +- .../reference/levels/jungle/jungle-obs_REF.gc | 2289 ++++++ .../reference/levels/jungleb/aphid_REF.gc | 8 +- .../levels/jungleb/jungleb-obs_REF.gc | 760 ++ .../reference/levels/jungleb/plat-flip_REF.gc | 8 +- .../levels/maincave/baby-spider_REF.gc | 4 +- .../levels/maincave/cavecrystal-light_REF.gc | 14 +- .../levels/maincave/maincave-part_REF.gc | 8 +- .../levels/maincave/mother-spider-proj_REF.gc | 12 +- .../levels/maincave/spiderwebs_REF.gc | 4 +- .../levels/misty/misty-conveyor_REF.gc | 12 +- .../levels/misty/misty-warehouse_REF.gc | 4 +- .../reference/levels/misty/muse_REF.gc | 4 +- .../levels/ogre/flying-lurker_REF.gc | 2 +- .../reference/levels/ogre/ogre-obs_REF.gc | 2608 +++++++ .../racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc | 62 +- .../target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc | 2 +- .../levels/snow/snow-flutflut-obs_REF.gc | 1625 +++++ .../reference/levels/snow/yeti_REF.gc | 4 +- .../reference/levels/sunken/qbert-plat_REF.gc | 16 +- .../levels/sunken/square-platform_REF.gc | 4 +- .../reference/levels/sunken/sunken-obs_REF.gc | 885 +++ .../levels/sunken/sunken-water_REF.gc | 12 +- .../reference/levels/sunken/wall-plat_REF.gc | 12 +- .../reference/levels/swamp/swamp-obs_REF.gc | 1627 +++++ .../levels/training/training-part_REF.gc | 4 +- .../levels/village1/assistant_REF.gc | 8 +- .../levels/village1/fishermans-boat_REF.gc | 6 +- .../levels/village1/village-obs-VI1_REF.gc | 1533 ++++ .../levels/village1/village1-part2_REF.gc | 4 +- .../reference/levels/village1/yakow_REF.gc | 4 +- .../levels/village2/assistant-village2_REF.gc | 8 +- .../levels/village2/sunken-elevator_REF.gc | 2 +- .../levels/village2/village2-obs_REF.gc | 2809 ++++++++ .../levels/village2/village2-part_REF.gc | 4 +- test/goalc/test_with_game.cpp | 7 + test/offline/config.jsonc | 13 +- 159 files changed, 42499 insertions(+), 5487 deletions(-) create mode 100644 sunken-obs.manual_restore_reminder create mode 100644 test/decompiler/reference/engine/anim/joint_REF.gc create mode 100644 test/decompiler/reference/engine/draw/process-drawable_REF.gc create mode 100644 test/decompiler/reference/levels/citadel/citadel-obs_REF.gc create mode 100644 test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc create mode 100644 test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc create mode 100644 test/decompiler/reference/levels/jungle/jungle-obs_REF.gc create mode 100644 test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc create mode 100644 test/decompiler/reference/levels/ogre/ogre-obs_REF.gc create mode 100644 test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc create mode 100644 test/decompiler/reference/levels/sunken/sunken-obs_REF.gc create mode 100644 test/decompiler/reference/levels/swamp/swamp-obs_REF.gc create mode 100644 test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc create mode 100644 test/decompiler/reference/levels/village2/village2-obs_REF.gc diff --git a/.gitattributes b/.gitattributes index f8b81361a2..478d1c2e54 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,8 @@ third-party/**/* linguist-vendored +third-party/**/* linguist-generated test/decompiler/reference/** linguist-vendored +# suppress from PR diffs - is just reviewing the same thing twice (if properly added to g_src) +test/decompiler/reference/** linguist-generated *.gc linguist-language=lisp *.gd linguist-language=lisp *.gs linguist-language=Scheme diff --git a/.github/workflows/windows-workflow.yaml b/.github/workflows/windows-workflow.yaml index a6ca4a4b67..b6e36d381b 100644 --- a/.github/workflows/windows-workflow.yaml +++ b/.github/workflows/windows-workflow.yaml @@ -74,4 +74,4 @@ jobs: env: NEXT_DIR: ${{ github.workspace }} FAKE_ISO_PATH: ${{ github.workspace }}/game/fake_iso.txt - run: ./build/bin/goalc-test.exe --gtest_color=yes + run: ./build/bin/goalc-test.exe --gtest_color=yes --gtest_filter="-*MANUAL_TEST*" diff --git a/Taskfile.yml b/Taskfile.yml index 75f9d6ae06..02bb0dc3c5 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -70,7 +70,7 @@ tasks: - python ./scripts/find-label-types.py --file "{{.FILES}}" type-test: cmds: - - ./out/build/Release/bin/goalc-test.exe --gtest_brief=0 --gtest_filter="*TypeConsistency*" + - ./out/build/Release/bin/goalc-test.exe --gtest_brief=0 --gtest_filter="*MANUAL_TEST_TypeConsistencyWithBuildFirst*" update-gsrc: cmds: - python ./scripts/next-decomp-file.py --files "{{.FILES}}" diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 6c3855da51..88a48ebeb1 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -797,7 +797,7 @@ (max 116) ) - +;; GAME-TEXT-ID ENUM BEGINS (defenum game-text-id :type uint32 :bitfield #f @@ -825,6 +825,8 @@ (spanish #x117) (italian #x118) (japanese #x119) + (press-to-warp #x11c) + (press-to-exit #x11d) (aspect-ratio #x125) (video-mode #x126) (game-options #x127) @@ -933,8 +935,12 @@ (MISSING-orb-hint #x233) + (jungle-maindoor-hint #x23c) + (firecanyon-not-enough-cells #x24f) + (jungle-precursorbridge-hint #x25b) + (beach-gimmie #x262) (beach-sentinel #x263) (jungle-canyon-end #x264) @@ -946,6 +952,8 @@ (beach-seagulls-avalanche #x273) + (beach-flutflutegg-hint #x275) + (sidekick-hint-fish-powerup #x278) (sidekick-speech-hint-crate-darkeco1 #x281) @@ -953,18 +961,23 @@ (sidekick-speech-crate-steel-break1 #x283) (sidekick-speech-hint-crate-iron #x284) (sidekick-speech-hint-crate-steel #x285) + + (jungleb-eco-vents-opened #x289) (sidekick-speech-crate-steel-break2 #x28e) (sidekick-speech-hint-crate-darkeco2 #x28f) - + (yakow-owed-powercell #x297) - + (misty-teetertotter-bonk-dax-tutorial #x2a4) (daxter-blue-eco-plat-tutorial #x2a7) + (misty-bone-bridge-hint #x2aa) (fish? #x2a9) + (firecanyon-collect-cells-collected #x2b1) + (firecanyon-collect-cells-collected-reminder #x2b2) (firecanyon-collect-cells-text #x2b3) (caught #x2b4) (missed #x2b5) @@ -1010,15 +1023,19 @@ (rolling-ring-chase-1 #x324) (rolling-ring-chase-2 #x325) + (rolling-race-beat-record #x335) (sidekick-speech-hint-rolling-crate-darkeco #x336) + (rolling-dark-plants-location-hint #x339) + (rolling-dark-plants-hint #x33a) + (rolling-ring-hint-one-ring-down #x33f) (rolling-ring-hint-be-quick-to-next #x340) (rolling-ring-hint-be-quick-all #x341) - + (sunken-blue-eco-charger-hint #x345) - (sunken-qbert-hint #x34a) + (sunken-qbert-plat-hint #x34a) (sunken-blue-eco-charger-all-hint #x34d) @@ -1026,10 +1043,19 @@ (swamp-bats-hint #x364) ;; maybe we can ???? the bats. lol (flutflut-reminder #x368) - + + (village2-warp-gate-reminder #x36f) + (village2-warp-gate-reminder-annoyed #x370) + (village2-warp-gate-reminder-very-annoyed #x371) + (village2-not-enough-cells-levitator #x36c) (villlage2-levitator-cell-req-text #x372) - + + (rolling-race-time-string-prefix #x373) + (rolling-race-record-string-prefix #x374) + (rolling-race-new-record-string-prefix #x375) + (rolling-race-try-again-string #x376) + (village3-miner-money #x400) (village3-oracle-money #x401) (snow-ram-3-left #x402) @@ -1063,16 +1089,25 @@ (cave-swing-poles #x426) (assistant-lavatube-powercell-hint #x428) - + (village3-gondola-malfunctioning #x429) + (village3-gondola-reactivated #x42a) + (snow-frozen-crate #x42b) ;; task name? (snow-bumpers #x42c) + (darkcave-light-crystal-low-light-hint #x437) + (darkcave-light-crystal-hint #x438) + (cave-trap-nest-hint #x440) - + (snow-fort-reminder #x443) + (ice-cube-hint #x448) - + + (village3-warp-gate-reminder #x452) + (village3-warp-gate-reminder=annoyed #x453) + (village3-warp-gate-reminder-very-annoyed #x454) (lavatube-powercell-req-text #x455) - + (fire-canyon-end #x500) (fire-canyon-buzzer #x501) @@ -1098,11 +1133,26 @@ (citadel-sage-red #x803) (citadel-sage-yellow #x804) (citadel-sage-green #x805) + (citadel-break-generator-hint #x806) + (citadel-lurker-bunny-alert #x808) + (citadel-break-generators-reminder #x809) + (citadel-climb-plat-hint #x80c) (misty-battle-finished #x813) + (training-precursor-orbs #x901) + (training-power-cells #x902) + (training-blue-eco-vent #x907) + (training-eco-green #x908) + (training-eco-blue #x909) + (training-precursor-door #x90b) + (training-double-jump #x90e) + (sage-voicebox-hint-crate-iron #x917) + (training-warp-gate-blocked #x919) + (training-warp-gate-reminder #x91a) + (training-gimmie-task-name #x91b) (training-buzzer-task-name #x91c) (training-door-task-name #x91d) @@ -1112,6 +1162,7 @@ (inc #xf10) (europe #xf11) ) +;; GAME-TEXT-ID ENUM ENDS ;; ---------------------- ;; File - gstring-h @@ -10420,7 +10471,7 @@ (target-grabbed? (_type_) symbol 26) (dummy-27 () none 27) (target-released? () symbol 28) - (dummy-29 () none 29) + (set-stack-size! (_type_) none 29) ) ) @@ -10471,6 +10522,7 @@ ((pause-after-out float :offset-assert 8) (pause-after-in float :offset-assert 12) ) + :pack-me :method-count-assert 18 :size-assert #x10 :flag-assert #x1200000010 @@ -10484,6 +10536,7 @@ (start-time int64 :offset-assert 16) (value float :offset-assert 24) ) + :pack-me :method-count-assert 11 :size-assert #x1c :flag-assert #xb0000001c @@ -10583,6 +10636,7 @@ (damp-period float :offset-assert 24) (ticks float :offset-assert 28) ) + :pack-me :method-count-assert 15 :size-assert #x20 :flag-assert #xf00000020 @@ -11369,6 +11423,7 @@ :flag-assert #x900000064 ) +(declare-type touching-shapes-entry structure) (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) @@ -11381,9 +11436,9 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (dummy-9 () none 9) + (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) (dummy-10 () none 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) vector 11) (dummy-12 () none 12) ) ) @@ -11416,7 +11471,7 @@ :flag-assert #x1200000010 (:methods (dummy-9 () none 9) - (dummy-10 () none 10) + (touched-shape (_type_ collide-shape-moving) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! (dummy-13 () none 13) @@ -15271,7 +15326,7 @@ (define-extern effect-param->sound-spec (function sound-spec (pointer float) int sound-spec)) (define-extern ear-trans (function vector)) (define-extern sound-play-by-spec (function sound-spec sound-id vector sound-id)) -(define-extern sound-play-by-name (function sound-name sound-id int int int uint vector sound-id)) +(define-extern sound-play-by-name (function sound-name sound-id int int int int symbol sound-id)) (define-extern sound-angle-convert (function float int)) (define-extern sound-set-ear-trans (function vector vector float int)) (define-extern activate-progress (function process progress-screen none)) @@ -18202,7 +18257,7 @@ ;; - Functions -(define-extern target-attack-up function) +(define-extern target-attack-up (function target symbol symbol object)) ;; TODO - ret not confirmed (define-extern find-ground-point function) (define-extern default-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) ;; TODO - not completely confirmed (define-extern simple-collision-reaction function) @@ -18365,7 +18420,7 @@ (:methods (water-vol-idle () _type_ :state 20) (water-vol-startup () _type_ :state 21) - (TODO-RENAME-22 (_type_) ripple-wave-set 22) + (TODO-RENAME-22 (_type_) ripple-wave-set 22) ;; can also return an obs? (dummy-23 () none 23) (dummy-24 () none 24) (TODO-RENAME-25 (_type_) object 25) @@ -19392,7 +19447,7 @@ (define-extern hide-hud-quick (function none)) (define-extern command-get-process (function basic process-drawable process)) (define-extern camera-change-to (function string int symbol none)) ;; TODO - not confirmed yet -(define-extern camera-look-at function) +(define-extern camera-look-at (function process int none)) ;; TODO - process is likely a target (define-extern camera-pov-from function) (define-extern command-get-trans function) (define-extern manipy-init (function vector entity skeleton-group vector none :behavior manipy)) @@ -19406,7 +19461,7 @@ (define-extern camera-anim function) (define-extern camera-tracker-init (function function none)) ;; TODO - not confirmed, see misty-warehouse::camera-view (define-extern cam-launcher-joystick function) -(define-extern launcher-init-by-other function) +(define-extern launcher-init-by-other (function vector float vector float none :behavior launcher)) (define-extern touch-tracker-init (function object object object none)) (define-extern process-drawable-pair-random-point! (function process-drawable process-drawable vector float vector)) (define-extern birth-func-set-quat function) @@ -19890,9 +19945,9 @@ (define-extern *deathcam-sg* skeleton-group) ;;(define-extern *smack-mods* object) ;; unknown type ;;(define-extern *smack-up-mods* object) ;; unknown type -;;(define-extern target-title object) ;; unknown type +(define-extern target-title (state target)) ;; unknown type (define-extern target-demo (state target)) ;; unknown type -;;(define-extern target-warp-in object) ;; unknown type +(define-extern target-warp-in (state target)) ;; unknown type ;;(define-extern *auto-continue* object) ;; unknown type @@ -22267,7 +22322,7 @@ (deftype water-anim (water-vol) ((ppointer-water-anim (pointer water-anim) :score 100 :offset 24) (look int32 :offset-assert 212) - (play-ambient-sound? basic :offset-assert 216) + (play-ambient-sound? symbol :offset-assert 216) ) :method-count-assert 30 :heap-base #x70 @@ -22397,7 +22452,7 @@ (cm-joint-z meters :offset-assert 88) (idle-distance meters :offset-assert 92) (platform symbol :offset-assert 96) - (sound-name symbol :offset-assert 100) + (sound-name string :offset-assert 100) ) :method-count-assert 9 :size-assert #x68 @@ -22810,12 +22865,11 @@ :size-assert #xc0 :heap-base #x50 :flag-assert #x18005000c0 - ;; inherited inspect of process-drawable (:methods - (unknown-state00 () _type_ :state 20) - (dummy-21 () none 21) + (idle () _type_ :state 20) + (active () _type_ :state 21) (use (int level) _type_ :state 22) - (dummy-23 () none 23) + (hidden () _type_ :state 23) ) ) @@ -23509,8 +23563,8 @@ ;; - Functions -(define-extern beachcam-spawn (function none)) ;; TODO - unconfirmed -(define-extern mistycam-spawn (function none)) ;; TODO - unconfirmed +(define-extern beachcam-spawn (function none)) +(define-extern mistycam-spawn (function none)) (define-extern babak-with-cannon-compute-ride-point (function mistycannon vector vector)) (define-extern babak-with-cannon-compute-cannon-dir (function mistycannon vector vector)) (define-extern handle->process-safe (function handle process)) @@ -23647,255 +23701,131 @@ ;; - Types -; (deftype windmill-one (process-drawable) -; ((sound-id sound-id :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype windmill-one (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (sound-id sound-id :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype grottopole (process-drawable) -; ((speed meters :offset-assert 176) -; (distance meters :offset-assert 180) -; (position int32 :offset-assert 184) -; (max-position int32 :offset-assert 188) -; (incomming-attack-id uint64 :offset-assert 192) -; ) -; :method-count-assert 20 -; :size-assert #xc8 -; :heap-base #x60 -; :flag-assert #x14006000c8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype grottopole (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (speed meters :offset-assert 176) + (distance meters :offset-assert 180) + (position int32 :offset-assert 184) + (max-position int32 :offset-assert 188) + (incomming-attack-id uint64 :offset-assert 192) + ) + :method-count-assert 20 + :size-assert #xc8 + :heap-base #x60 + :flag-assert #x14006000c8 + ) -; (deftype ecoventrock (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ecoventrock (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype flying-rock (process-drawable) -; ((tumble quaternion :inline :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xc0 -; :heap-base #x50 -; :flag-assert #x14005000c0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype flying-rock (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) ;; a guess + (tumble quaternion :inline :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xc0 + :heap-base #x50 + :flag-assert #x14005000c0 + ) -; (deftype bladeassm (process-drawable) -; ((angle float :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype bladeassm (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (angle float :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype flutflutegg (process-drawable) -; ((fall-dist meters :offset-assert 176) -; (start vector :inline :offset-assert 192) -; (dir vector :inline :offset-assert 208) -; (pos float :offset-assert 224) -; (vel float :offset-assert 228) -; (wobbler basic :offset-assert 232) -; (last-impulse-time int32 :offset-assert 236) -; (incomming-attack-id uint64 :offset-assert 240) -; (ambients-played int32 :offset-assert 248) -; (ambient ambient-control :inline :offset-assert 256) -; ) -; :method-count-assert 21 -; :size-assert #x110 -; :heap-base #xa0 -; :flag-assert #x1500a00110 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype flutflutegg (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (fall-dist meters :offset-assert 176) + (start vector :inline :offset-assert 192) + (dir vector :inline :offset-assert 208) + (pos float :offset-assert 224) + (vel float :offset-assert 228) + (wobbler wobbler :offset-assert 232) + (last-impulse-time int32 :offset-assert 236) + (incomming-attack-id uint64 :offset-assert 240) + (ambients-played int32 :offset-assert 248) + (ambient ambient-control :inline :offset-assert 256) + ) + :method-count-assert 21 + :size-assert #x110 + :heap-base #xa0 + :flag-assert #x1500a00110 + (:methods + (dummy-20 (_type_ float float float) none 20) + ) + ) -; (deftype harvester (process-drawable) -; ((alt-actor basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype harvester (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (alt-actor entity-actor :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype beachcam (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype beachcam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) ;; - Functions -(define-extern flutflutegg-hit-sounds function) -(define-extern bladeassm-prebind-function function) -(define-extern flying-rock-init-by-other function) -(define-extern spawn-flying-rock function) -(define-extern move-grottopole-to-position function) -(define-extern move-grottopole function) +(define-extern flutflutegg-hit-sounds (function none :behavior flutflutegg)) +(define-extern bladeassm-prebind-function (function process-drawable int bladeassm event-message-block object)) ;; TODO - first arg is very likely wrong +(define-extern flying-rock-init-by-other (function vector vector float entity none :behavior flying-rock)) +(define-extern spawn-flying-rock (function vector vector float entity none)) +(define-extern move-grottopole-to-position (function grottopole none)) +(define-extern move-grottopole (function grottopole float none)) ;; - Unknowns (define-extern *beachcam-sg* skeleton-group) (define-extern *harvester-sg* skeleton-group) -;;(define-extern harvester-idle object) ;; unknown type -;;(define-extern harvester-inflate object) ;; unknown type +(define-extern harvester-idle (state harvester)) ;; unknown type +(define-extern harvester-inflate (state symbol harvester)) ;; unknown type (define-extern *flutflutegg-sg* skeleton-group) -;;(define-extern flutflutegg-break object) ;; unknown type -;;(define-extern flutflutegg-idle object) ;; unknown type -;;(define-extern flutflutegg-physics-fall object) ;; unknown type -;;(define-extern flutflutegg-physics object) ;; unknown type +(define-extern flutflutegg-break (state symbol flutflutegg)) ;; unknown type +(define-extern flutflutegg-idle (state flutflutegg)) ;; unknown type +(define-extern flutflutegg-physics-fall (state flutflutegg)) ;; unknown type +(define-extern flutflutegg-physics (state flutflutegg)) ;; unknown type (define-extern *bladeassm-sg* skeleton-group) -;;(define-extern bladeassm-idle object) ;; unknown type +(define-extern bladeassm-idle (state bladeassm)) ;; unknown type (define-extern *kickrock-sg* skeleton-group) -;;(define-extern flying-rock-rolling object) ;; unknown type -;;(define-extern flying-rock-idle object) ;; unknown type +(define-extern flying-rock-rolling (state flying-rock)) ;; unknown type +(define-extern flying-rock-idle (state flying-rock)) ;; unknown type (define-extern *ecoventrock-sg* skeleton-group) -;;(define-extern ecoventrock-break object) ;; unknown type -;;(define-extern ecoventrock-idle object) ;; unknown type +(define-extern ecoventrock-break (state symbol ecoventrock)) ;; unknown type +(define-extern ecoventrock-idle (state ecoventrock)) ;; unknown type (define-extern *grottopole-sg* skeleton-group) -;;(define-extern grottopole-idle object) ;; unknown type -;;(define-extern grottopole-moving-up object) ;; unknown type -;;(define-extern grottopole-moving-down object) ;; unknown type +(define-extern grottopole-idle (state grottopole)) ;; unknown type +(define-extern grottopole-moving-up (state grottopole)) ;; unknown type +(define-extern grottopole-moving-down (state grottopole)) ;; unknown type (define-extern *windmill-one-sg* skeleton-group) -;;(define-extern windmill-one-idle object) ;; unknown type +(define-extern windmill-one-idle (state windmill-one)) ;; unknown type (define-extern *flutflut-naked-sg* skeleton-group) @@ -24721,86 +24651,46 @@ ;; - Types -; (deftype warpgate (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype warpgate (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) (deftype warp-gate-switch (basebutton) - ((warp uint64 :offset-assert 256) + ((warp handle :offset-assert 256) ) :method-count-assert 33 :size-assert #x108 :heap-base #xa0 :flag-assert #x2100a00108 (:methods - (dummy-32 () none 32) + (pressable? (_type_) symbol 32) ) ) -; (deftype village-cam (process) -; ((root basic :offset-assert 112) -; (range meters :offset-assert 116) -; (index int32 :offset-assert 120) -; (state-time uint64 :offset-assert 128) -; ) -; :method-count-assert 15 -; :size-assert #x88 -; :heap-base #x20 -; :flag-assert #xf00200088 -; ;; inherited inspect of process -; (: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) -; ) -; ) +(deftype village-cam (process) + ((root-override trsq :score 100 :offset-assert 112) + (range meters :offset-assert 116) + (index int32 :offset-assert 120) + (state-time uint64 :offset-assert 128) + ) + :method-count-assert 15 + :size-assert #x88 + :heap-base #x20 + :flag-assert #xf00200088 + (:methods + (idle () _type_ :state 14) + ) + ) ;; - Functions -(define-extern warp-gate-init-by-other function) -(define-extern get-next-slot-up function) -(define-extern get-next-slot-down function) -(define-extern print-level-name function) +(define-extern warp-gate-init-by-other (function vector none :behavior warp-gate)) +(define-extern get-next-slot-up (function warp-gate int int)) +(define-extern get-next-slot-down (function warp-gate int int)) +(define-extern print-level-name (function int font-context int int font-context)) ;; - Unknowns @@ -24972,335 +24862,123 @@ :size-assert #xdc :heap-base #x70 :flag-assert #x17007000dc - ;; inherited inspect of process-drawable (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) - (idle () none 22) ;; state + (init-root! (_type_) none 20) + (setup-new-process! (_type_) none 21) + (idle () _type_ :state 22) ) ) -; (deftype citb-arm (citb-arm-section) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm (citb-arm-section) + ((root-override collide-shape-moving :score 100 :offset 112)) + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-shoulder (citb-arm-section) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-shoulder (citb-arm-section) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-a (citb-arm) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-a (citb-arm) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-b (citb-arm) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-b (citb-arm) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-c (citb-arm) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-c (citb-arm) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-d (citb-arm) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-d (citb-arm) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-shoulder-a (citb-arm-shoulder) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-shoulder-a (citb-arm-shoulder) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-arm-shoulder-b (citb-arm-shoulder) -; () -; :method-count-assert 23 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x17007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-arm-shoulder-b (citb-arm-shoulder) + () + :method-count-assert 23 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x17007000dc + ) -; (deftype citb-disc (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (rot-scale float :offset-assert 184) -; ) -; :method-count-assert 22 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x16005000bc -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype citb-disc (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + (rot-scale float :offset-assert 184) + ) + :method-count-assert 22 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x16005000bc + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) -; (deftype citb-disc-a (citb-disc) -; () -; :method-count-assert 22 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x16005000bc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-disc-a (citb-disc) + () + :method-count-assert 22 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x16005000bc + ) -; (deftype citb-disc-b (citb-disc) -; () -; :method-count-assert 22 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x16005000bc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-disc-b (citb-disc) + () + :method-count-assert 22 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x16005000bc + ) -; (deftype citb-disc-c (citb-disc) -; () -; :method-count-assert 22 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x16005000bc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-disc-c (citb-disc) + () + :method-count-assert 22 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x16005000bc + ) -; (deftype citb-disc-d (citb-disc) -; () -; :method-count-assert 22 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x16005000bc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-disc-d (citb-disc) + () + :method-count-assert 22 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x16005000bc + ) (deftype citb-iris-door (eco-door) () @@ -25310,296 +24988,120 @@ :flag-assert #x1b00a00104 ) -; (deftype citb-button (basebutton) -; () -; :method-count-assert 32 -; :size-assert #x100 -; :heap-base #x90 -; :flag-assert #x2000900100 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-button (basebutton) + () + :method-count-assert 32 + :size-assert #x100 + :heap-base #x90 + :flag-assert #x2000900100 + ) -; (deftype citb-launcher (plat) -; ((launcher uint32 :offset-assert 264) -; ) -; :method-count-assert 33 -; :size-assert #x10c -; :heap-base #xa0 -; :flag-assert #x2100a0010c -; ;; inherited inspect of plat -; (: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) -; ) -; ) +(deftype citb-launcher (plat) + ((launcher (pointer launcher) :offset-assert 264) + ) + :method-count-assert 33 + :size-assert #x10c + :heap-base #xa0 + :flag-assert #x2100a0010c + ) -; (deftype citb-robotboss (process-drawable) -; ((shield-on basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype citb-robotboss (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (shield-on symbol :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype citb-coil (process-drawable) -; ((part-off basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype citb-coil (process-drawable) + ((part-off sparticle-launch-control :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype citb-hose (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-hose (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype citb-chains (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype citb-chains (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype citb-generator (process-drawable) -; ((normal-look lod-set :inline :offset-assert 176) -; (broken-look lod-set :inline :offset-assert 212) -; (mushroom-pos vector :inline :offset-assert 256) -; (mushroom basic :offset-assert 272) -; (birth-fuel-cell basic :offset-assert 276) -; (trigger-others basic :offset-assert 280) -; (part-broken basic :offset-assert 284) -; (part-mushroom basic :offset-assert 288) -; ) -; :method-count-assert 22 -; :size-assert #x124 -; :heap-base #xc0 -; :flag-assert #x1600c00124 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype citb-generator (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (normal-look lod-set :inline :offset-assert 176) + (broken-look lod-set :inline :offset-assert 212) + (mushroom-pos vector :inline :offset-assert 256) + (mushroom symbol :offset-assert 272) + (birth-fuel-cell symbol :offset-assert 276) + (trigger-others symbol :offset-assert 280) ; a guess + (part-broken sparticle-launch-control :offset-assert 284) + (part-mushroom sparticle-launch-control :offset-assert 288) + ) + :method-count-assert 22 + :size-assert #x124 + :heap-base #xc0 + :flag-assert #x1600c00124 + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) -; (deftype citadelcam (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citadelcam (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype citb-battlecontroller (battlecontroller) -; () -; :method-count-assert 29 -; :size-assert #x27c -; :heap-base #x210 -; :flag-assert #x1d0210027c -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype citb-battlecontroller (battlecontroller) + () + :method-count-assert 29 + :size-assert #x27c + :heap-base #x210 + :flag-assert #x1d0210027c + ) ;; - Functions -(define-extern citb-generator-trigger-others function) -(define-extern citb-hose-event-handler function) +(define-extern citb-generator-trigger-others (function none :behavior citb-generator)) +(define-extern citb-hose-event-handler (function process int symbol event-message-block object :behavior citb-hose)) ;; - Unknowns (define-extern *citadelcam-sg* skeleton-group) -;;(define-extern citadelcam-idle object) ;; unknown type -;;(define-extern citadelcam-stair-plats object) ;; unknown type -;;(define-extern citb-generator-broken object) ;; unknown type -;;(define-extern citb-generator-idle object) ;; unknown type +(define-extern citadelcam-idle (state citadelcam)) ;; unknown type +(define-extern citadelcam-stair-plats (state citadelcam)) ;; unknown type +(define-extern citb-generator-broken (state citb-generator)) ;; unknown type +(define-extern citb-generator-idle (state citb-generator)) ;; unknown type (define-extern *citb-generator-sg* skeleton-group) (define-extern *citb-generator-broken-sg* skeleton-group) -;;(define-extern citb-generator-break object) ;; unknown type +(define-extern citb-generator-break (state citb-generator)) ;; unknown type (define-extern *citb-hose-sg* skeleton-group) -;;(define-extern citb-hose-die object) ;; unknown type -;;(define-extern citb-hose-idle object) ;; unknown type -;;(define-extern citb-hose-spawn object) ;; unknown type +(define-extern citb-hose-die (state citb-hose)) ;; unknown type +(define-extern citb-hose-idle (state citb-hose)) ;; unknown type +(define-extern citb-hose-spawn (state citb-hose)) ;; unknown type (define-extern *citb-coil-sg* skeleton-group) -;;(define-extern citb-coil-broken object) ;; unknown type -;;(define-extern citb-coil-idle object) ;; unknown type -;;(define-extern citb-coil-break object) ;; unknown type +(define-extern citb-coil-broken (state citb-coil)) ;; unknown type +(define-extern citb-coil-idle (state citb-coil)) ;; unknown type +(define-extern citb-coil-break (state citb-coil)) ;; unknown type (define-extern *citb-robotboss-sg* skeleton-group) -;;(define-extern citb-robotboss-die object) ;; unknown type -;;(define-extern citb-robotboss-idle object) ;; unknown type +(define-extern citb-robotboss-die (state citb-robotboss)) ;; unknown type +(define-extern citb-robotboss-idle (state citb-robotboss)) ;; unknown type (define-extern *citb-robotboss-nose-sg* skeleton-group) (define-extern *citb-robotboss-head-sg* skeleton-group) (define-extern *citb-robotboss-gun-sg* skeleton-group) @@ -25615,7 +25117,7 @@ (define-extern *citb-disc-c-sg* skeleton-group) (define-extern *citb-disc-b-sg* skeleton-group) (define-extern *citb-disc-a-sg* skeleton-group) -;;(define-extern citb-disc-idle object) ;; unknown type +(define-extern citb-disc-idle (state citb-disc)) ;; unknown type (define-extern *citb-arm-shoulder-b-sg* skeleton-group) (define-extern *citb-arm-shoulder-a-sg* skeleton-group) (define-extern *citb-arm-d-sg* skeleton-group) @@ -26574,10 +26076,9 @@ ;; - Types -(declare-type cavecrystal-light-control basic) (deftype cavecrystal (process-drawable) ((root-override collide-shape :score 100 :offset 112) - (is-master? symbol :offset-assert 176) + (is-master? symbol :offset-assert 176) (crystal-id int32 :offset-assert 180) (glow-u float :offset-assert 184) (glow-wf-period int32 :offset-assert 188) @@ -26598,17 +26099,18 @@ :heap-base #xd0 :flag-assert #x1600d00140 (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) + (update-connected-crystals! (_type_) none 20) + (compute-glow (_type_) float 21) ) ) ;; - Unknowns +(declare-type cavecrystal-light-control basic) (define-extern *cavecrystal-sg* skeleton-group) (define-extern *cavecrystal-light-control* cavecrystal-light-control) -;;(define-extern cavecrystal-idle object) ;; unknown type -;;(define-extern cavecrystal-active object) ;; unknown type +(define-extern cavecrystal-idle (state cavecrystal)) +(define-extern cavecrystal-active (state cavecrystal)) ;; ---------------------- @@ -27924,29 +27426,16 @@ ;; - Types -; (deftype eggtop (process-drawable) -; ((cam-tracker uint64 :offset-assert 176) -; (sound-id sound-id :offset-assert 184) -; ) -; :method-count-assert 20 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x14005000bc -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype eggtop (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (cam-tracker uint64 :offset-assert 176) + (sound-id sound-id :offset-assert 184) + ) + :method-count-assert 20 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x14005000bc + ) (deftype jng-iris-door (eco-door) () @@ -27960,8 +27449,8 @@ (define-extern *jng-iris-door-sg* skeleton-group) (define-extern *eggtop-sg* skeleton-group) -;;(define-extern eggtop-close object) ;; unknown type -;;(define-extern eggtop-idle object) ;; unknown type +(define-extern eggtop-close (state symbol eggtop)) +(define-extern eggtop-idle (state eggtop)) ;; ---------------------- @@ -28479,278 +27968,116 @@ ;; - Types -; (deftype precurbridge-span (UNKNOWN) -; () -; :method-count-assert 0 -; :size-assert #x0 -; :flag-assert #x0 -; ) +;; TODO - completely useless? +(deftype precurbridge-span (structure) + () + :method-count-assert 9 + :size-assert #x0 + :flag-assert #x900000000 + ) -; (deftype logtrap (process-drawable) -; () -; :method-count-assert 21 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x15004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype logtrap (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112)) + :method-count-assert 21 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) -; (deftype towertop (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype towertop (process-drawable) + ((root-override trsq :score 100 :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype lurkerm-tall-sail (process-drawable) -; ((speed float :offset-assert 176) -; (alt-actor basic :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype lurkerm-tall-sail (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype lurkerm-short-sail (process-drawable) -; ((speed float :offset-assert 176) -; (alt-actor basic :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype lurkerm-short-sail (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype lurkerm-piston (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (base vector :inline :offset-assert 192) -; (height vector :inline :offset-assert 208) -; (speed float :offset-assert 224) -; (alt-actor basic :offset-assert 228) -; ) -; :method-count-assert 20 -; :size-assert #xe8 -; :heap-base #x80 -; :flag-assert #x14008000e8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype lurkerm-piston (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + (base vector :inline :offset-assert 192) + (height vector :inline :offset-assert 208) + (speed float :offset-assert 224) + (alt-actor entity-actor :offset-assert 228) + ) + :method-count-assert 20 + :size-assert #xe8 + :heap-base #x80 + :flag-assert #x14008000e8 + ) -; (deftype accordian (process-drawable) -; ((speed float :offset-assert 176) -; (alt-actor basic :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype accordian (process-drawable) + ((speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype junglecam (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype junglecam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype precurbridgecam (pov-camera) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype precurbridgecam (pov-camera) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) -; (deftype precurbridge (process-drawable) -; ((smush smush-control :inline :offset-assert 176) -; (base vector :inline :offset-assert 208) -; (activation-point vector :inline :offset-assert 224) -; (span-array UNKNOWN 8 :offset-assert 240) -; ) -; :method-count-assert 20 -; :size-assert #x110 -; :heap-base #xa0 -; :flag-assert #x1400a00110 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype precurbridge (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (smush smush-control :inline :offset-assert 176) + (base vector :inline :offset-assert 208) + (activation-point vector :inline :offset-assert 224) + (span-array precurbridge-span 8 :offset-assert 240) + ) + :method-count-assert 20 + :size-assert #x110 + :heap-base #xa0 + :flag-assert #x1400a00110 + ) -; (deftype maindoor (process-drawable) -; ((thresh vector :inline :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xc0 -; :heap-base #x50 -; :flag-assert #x14005000c0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype maindoor (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (thresh vector :inline :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xc0 + :heap-base #x50 + :flag-assert #x14005000c0 + ) (deftype sidedoor (eco-door) () @@ -28760,86 +28087,50 @@ :flag-assert #x1b00a00104 ) -; (deftype jngpusher (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (back-prim basic :offset-assert 184) -; ) -; :method-count-assert 20 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x14005000bc -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +;; I think unused! +(deftype jngpusher (process-drawable) + ((root-override trsqv :offset 112) + (sync sync-info :inline :offset-assert 176) + (back-prim collide-shape-prim :offset-assert 184) + ) + :method-count-assert 20 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x14005000bc + ) -; (deftype jungle-water (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype jungle-water (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) ;; - Unknowns -;;(define-extern ripple-for-jungle-water object) ;; unknown type +(define-extern ripple-for-jungle-water ripple-wave-set) ;; unknown type (define-extern *jngpusher-sg* skeleton-group) -;;(define-extern jngpusher-idle object) ;; unknown type +(define-extern jngpusher-idle (state jngpusher)) ;; unknown type (define-extern *sidedoor-sg* skeleton-group) (define-extern *maindoor-sg* skeleton-group) -;;(define-extern maindoor-open object) ;; unknown type -;;(define-extern maindoor-closed object) ;; unknown type +(define-extern maindoor-open (state symbol maindoor)) ;; unknown type +(define-extern maindoor-closed (state symbol maindoor)) ;; unknown type (define-extern *precurbridge-sg* skeleton-group) -;;(define-extern precurbridge-active object) ;; unknown type -;;(define-extern precurbridge-idle object) ;; unknown type +(define-extern precurbridge-active (state symbol precurbridge)) ;; unknown type +(define-extern precurbridge-idle (state precurbridge)) ;; unknown type (define-extern *junglecam-sg* skeleton-group) -;;(define-extern precurbridge-activate object) ;; unknown type +(define-extern precurbridge-activate (state precurbridge)) ;; unknown type (define-extern *accordian-sg* skeleton-group) -;;(define-extern accordian-idle object) ;; unknown type +(define-extern accordian-idle (state accordian)) ;; unknown type (define-extern *lurkerm-piston-sg* skeleton-group) -;;(define-extern lurkerm-piston-idle object) ;; unknown type +(define-extern lurkerm-piston-idle (state lurkerm-piston)) ;; unknown type (define-extern *lurkerm-short-sail-sg* skeleton-group) -;;(define-extern lurkerm-short-sail-idle object) ;; unknown type +(define-extern lurkerm-short-sail-idle (state lurkerm-short-sail)) ;; unknown type (define-extern *lurkerm-tall-sail-sg* skeleton-group) -;;(define-extern lurkerm-tall-sail-idle object) ;; unknown type +(define-extern lurkerm-tall-sail-idle (state lurkerm-tall-sail)) ;; unknown type (define-extern *towertop-sg* skeleton-group) -;;(define-extern towertop-idle object) ;; unknown type +(define-extern towertop-idle (state towertop)) ;; unknown type (define-extern *logtrap-sg* skeleton-group) (define-extern *med-res-firecanyon-sg* skeleton-group) (define-extern *jungle-camera-sg* skeleton-group) @@ -30155,464 +29446,195 @@ ;; - Types -; (deftype windmill-sail (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (blade-normal vector :inline :offset-assert 192) -; (orig-quat quaternion :inline :offset-assert 208) -; (alt-actor basic :offset-assert 224) -; (part2 basic :offset-assert 228) -; ) -; :method-count-assert 20 -; :size-assert #xe8 -; :heap-base #x80 -; :flag-assert #x14008000e8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype windmill-sail (process-drawable) + ((root-override trsq :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + (alt-actor entity-actor :offset-assert 224) + (part2 sparticle-launch-control :offset-assert 228) + ) + :method-count-assert 20 + :size-assert #xe8 + :heap-base #x80 + :flag-assert #x14008000e8 + ) -; (deftype sagesail (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (blade-normal vector :inline :offset-assert 192) -; (orig-quat quaternion :inline :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xe0 -; :heap-base #x70 -; :flag-assert #x14007000e0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype sagesail (process-drawable) + ((root-override trsq :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xe0 + :heap-base #x70 + :flag-assert #x14007000e0 + ) -; (deftype windspinner (process-drawable) -; ((blade-normal vector :inline :offset-assert 176) -; (orig-quat quaternion :inline :offset-assert 192) -; (angle float :offset-assert 208) -; (angle-vel float :offset-assert 212) -; ) -; :method-count-assert 20 -; :size-assert #xd8 -; :heap-base #x70 -; :flag-assert #x14007000d8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype windspinner (process-drawable) + ((blade-normal vector :inline :offset-assert 176) + (orig-quat quaternion :inline :offset-assert 192) + (angle float :offset-assert 208) + (angle-vel float :offset-assert 212) + ) + :method-count-assert 20 + :size-assert #xd8 + :heap-base #x70 + :flag-assert #x14007000d8 + ) -; (deftype mayorgears (process-drawable) -; ((alt-actor basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype mayorgears (process-drawable) + ((alt-actor entity-actor :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype reflector-middle (process-drawable) -; ((reflector-trans vector :inline :offset-assert 176) -; (next-reflector-trans vector :inline :offset-assert 192) -; ) -; :method-count-assert 20 -; :size-assert #xd0 -; :heap-base #x60 -; :flag-assert #x14006000d0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype reflector-middle (process-drawable) + ((reflector-trans vector :inline :offset-assert 176) + (next-reflector-trans vector :inline :offset-assert 192) + ) + :method-count-assert 20 + :size-assert #xd0 + :heap-base #x60 + :flag-assert #x14006000d0 + ) -; (deftype reflector-end (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype reflector-end (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype villa-starfish (process-drawable) -; ((child-count int8 :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb1 -; :heap-base #x50 -; :flag-assert #x14005000b1 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype villa-starfish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb1 + :heap-base #x50 + :flag-assert #x14005000b1 + ) -; (deftype starfish (nav-enemy) -; () -; :method-count-assert 76 -; :size-assert #x190 -; :heap-base #x120 -; :flag-assert #x4c01200190 -; ;; not enough basic ops -; (: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) -; (dummy-53 () none 53) -; (dummy-54 () none 54) -; (dummy-55 () none 55) -; (dummy-56 () none 56) -; (dummy-57 () none 57) -; (dummy-58 () none 58) -; (dummy-59 () none 59) -; (dummy-60 () none 60) -; (dummy-61 () none 61) -; (dummy-62 () none 62) -; (dummy-63 () none 63) -; (dummy-64 () none 64) -; (dummy-65 () none 65) -; (dummy-66 () none 66) -; (dummy-67 () none 67) -; (dummy-68 () none 68) -; (dummy-69 () none 69) -; (dummy-70 () none 70) -; (dummy-71 () none 71) -; (dummy-72 () none 72) -; (dummy-73 () none 73) -; (dummy-74 () none 74) -; (dummy-75 () none 75) -; ) -; ) +(deftype starfish (nav-enemy) + () + :method-count-assert 76 + :size-assert #x190 + :heap-base #x120 + :flag-assert #x4c01200190 + ) -; (deftype village-fish (process-drawable) -; ((child-count int8 :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb1 -; :heap-base #x50 -; :flag-assert #x14005000b1 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype village-fish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb1 + :heap-base #x50 + :flag-assert #x14005000b1 + ) -; (deftype villa-fisha (village-fish) -; () -; :method-count-assert 20 -; :size-assert #xb1 -; :heap-base #x50 -; :flag-assert #x14005000b1 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villa-fisha (village-fish) + () + :method-count-assert 20 + :size-assert #xb1 + :heap-base #x50 + :flag-assert #x14005000b1 + ) -; (deftype villa-fishb (village-fish) -; () -; :method-count-assert 20 -; :size-assert #xb1 -; :heap-base #x50 -; :flag-assert #x14005000b1 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villa-fishb (village-fish) + () + :method-count-assert 20 + :size-assert #xb1 + :heap-base #x50 + :flag-assert #x14005000b1 + ) -; (deftype cyclegen (structure) -; ((output float :offset-assert 0) -; (inc float :offset-assert 4) -; ) -; :method-count-assert 9 -; :size-assert #x8 -; :flag-assert #x900000008 -; ) +(deftype cyclegen (structure) + ((output float :offset-assert 0) + (inc float :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) -; (deftype hutlamp (process-drawable) -; ((pivot basic :offset-assert 176) -; (clock cyclegen :inline :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xbc -; :heap-base #x50 -; :flag-assert #x14005000bc -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype hutlamp (process-drawable) + ((pivot joint-mod-set-local :offset-assert 176) + (clock cyclegen :inline :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xbc + :heap-base #x50 + :flag-assert #x14005000bc + ) -; (deftype revcycleprop (process-drawable) -; () -; :method-count-assert 21 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x15004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype revcycleprop (process-drawable) + () + :method-count-assert 21 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) -; (deftype revcycle (process-drawable) -; () -; :method-count-assert 21 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x15004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype revcycle (process-drawable) + () + :method-count-assert 21 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) -; (deftype villagea-water (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villagea-water (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) ;; - Functions -(define-extern set-period function) -(define-extern update-clock function) -(define-extern process-drawable-child-count function) -(define-extern starfish-spawn-child function) -(define-extern starfish-init-by-other function) +(define-extern set-period (function cyclegen int float)) +(define-extern update-clock (function cyclegen float)) +(define-extern process-drawable-child-count (function int :behavior process-drawable)) +(define-extern starfish-spawn-child (function (pointer starfish) :behavior starfish)) +(define-extern starfish-init-by-other (function starfish vector none :behavior starfish)) ;; - Unknowns -;;(define-extern ripple-for-villagea-water object) ;; unknown type +(define-extern ripple-for-villagea-water ripple-wave-set) ;; unknown type (define-extern *revcycle-sg* skeleton-group) (define-extern *revcycleprop-sg* skeleton-group) (define-extern *hutlamp-sg* skeleton-group) -;;(define-extern hutlamp-idle object) ;; unknown type -;;(define-extern village-fish-idle object) ;; unknown type -;;(define-extern villa-starfish-idle object) ;; unknown type -;;(define-extern starfish-idle object) ;; unknown type +(define-extern hutlamp-idle (state hutlamp)) ;; unknown type +(define-extern village-fish-idle (state village-fish)) ;; unknown type +(define-extern villa-starfish-idle (state villa-starfish)) ;; unknown type +(define-extern starfish-idle (state starfish)) ;; unknown type (define-extern *starfish-sg* skeleton-group) (define-extern *starfish-nav-enemy-info* nav-enemy-info) -;;(define-extern starfish-patrol object) ;; unknown type -;;(define-extern reflector-end-idle object) ;; unknown type +(define-extern starfish-patrol (state starfish)) ;; unknown type +(define-extern reflector-end-idle (state reflector-end)) ;; unknown type (define-extern *reflector-middle-sg* skeleton-group) -;;(define-extern reflector-middle-idle object) ;; unknown type +(define-extern reflector-middle-idle (state reflector-middle)) ;; unknown type (define-extern *mayorgears-sg* skeleton-group) -;;(define-extern mayorgears-idle object) ;; unknown type +(define-extern mayorgears-idle (state mayorgears)) ;; unknown type (define-extern *windspinner-sg* skeleton-group) -;;(define-extern windspinner-idle object) ;; unknown type +(define-extern windspinner-idle (state windspinner)) ;; unknown type (define-extern *sagesail-sg* skeleton-group) -;;(define-extern sagesail-idle object) ;; unknown type +(define-extern sagesail-idle (state sagesail)) ;; unknown type (define-extern *windmill-sail-sg* skeleton-group) -;;(define-extern windmill-sail-idle object) ;; unknown type +(define-extern windmill-sail-idle (state windmill-sail)) ;; unknown type (define-extern *med-res-jungle-sg* skeleton-group) (define-extern *med-res-jungle1-sg* skeleton-group) (define-extern *med-res-jungle2-sg* skeleton-group) @@ -30898,7 +29920,7 @@ ) (deftype training-cam (process) - ((root basic :offset-assert 112) + ((root trsq :offset-assert 112) (range meters :offset-assert 116) (index int32 :offset-assert 120) (state-time uint64 :offset-assert 128) @@ -30930,7 +29952,8 @@ ) (deftype scarecrow-a (process-drawable) - ((incomming-attack-id uint64 :offset-assert 176) + ((root-override collide-shape :score 100 :offset 112) + (incomming-attack-id uint64 :offset-assert 176) (intersection vector :inline :offset-assert 192) ) :method-count-assert 22 @@ -30939,12 +29962,13 @@ :flag-assert #x16006000d0 (:methods (idle () _type_ :state 20) - (dummy-21 () none 21) + (hit (float vector symbol) _type_ :state 21) ) ) (deftype scarecrow-b (process-drawable) - ((incomming-attack-id uint64 :offset-assert 176) + ((root-override collide-shape :score 100 :offset 112) + (incomming-attack-id uint64 :offset-assert 176) (intersection vector :inline :offset-assert 192) ) :method-count-assert 22 @@ -30952,8 +29976,8 @@ :heap-base #x60 :flag-assert #x16006000d0 (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) + (idle () _type_ :state 20) + (hit (float vector symbol) _type_ :state 21) ) ) @@ -31002,336 +30026,135 @@ ;; - Types -; (deftype boatpaddle (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype boatpaddle (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype windturbine (process-drawable) -; ((spawn-particle-enable basic :offset-assert 176) -; (angle-speed float :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype windturbine (process-drawable) + ((spawn-particle-enable symbol :offset-assert 176) + (angle-speed float :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype mis-bone-bridge (process-drawable) -; ((particle-group basic :offset-assert 176) -; (player-attack-id int32 :offset-assert 180) -; (fall-anim-index int32 :offset-assert 184) -; (hit-points int8 :offset-assert 188) -; ) -; :method-count-assert 20 -; :size-assert #xbd -; :heap-base #x50 -; :flag-assert #x14005000bd -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype mis-bone-bridge (process-drawable) + ((root-override collide-shape-moving :score 100 :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) + ) + :method-count-assert 20 + :size-assert #xbd + :heap-base #x50 + :flag-assert #x14005000bd + ) -; (deftype breakaway (process-drawable) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype breakaway (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112)) + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + (:methods + (init! (_type_ res-lump int) none 20) + (go-idle (_type_) none 21) + ) + ) -; (deftype breakaway-right (breakaway) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype breakaway-right (breakaway) + () + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + ) -; (deftype breakaway-mid (breakaway) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype breakaway-mid (breakaway) + () + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + ) -; (deftype breakaway-left (breakaway) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype breakaway-left (breakaway) + () + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + ) -; (deftype bone-platform (rigid-body-platform) -; ((anchor-point vector :inline :offset-assert 736) -; ) -; :method-count-assert 35 -; :size-assert #x2f0 -; :heap-base #x280 -; :flag-assert #x23028002f0 -; ;; inherited inspect of rigid-body-platform -; (: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) -; ) -; ) +(deftype bone-platform (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + ) + :method-count-assert 35 + :size-assert #x2f0 + :heap-base #x280 + :flag-assert #x23028002f0 + ) -; (deftype mistycam (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype mistycam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype misty-battlecontroller (battlecontroller) -; () -; :method-count-assert 29 -; :size-assert #x27c -; :heap-base #x210 -; :flag-assert #x1d0210027c -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype misty-battlecontroller (battlecontroller) + () + :method-count-assert 29 + :size-assert #x27c + :heap-base #x210 + :flag-assert #x1d0210027c + ) -; (deftype boat-fuelcell (process-drawable) -; ((play-cutscene? basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype boat-fuelcell (process-drawable) + ((play-cutscene? symbol :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) ;; - Functions -(define-extern mis-bone-bridge-event-handler function) -(define-extern actor-wait-for-period function) -(define-extern misty-cam-restore function) +(define-extern mis-bone-bridge-event-handler (function process int symbol event-message-block object :behavior mis-bone-bridge)) +(define-extern actor-wait-for-period (function int symbol)) +(define-extern misty-cam-restore (function symbol)) ;; - Unknowns -;;(define-extern boat-fuelcell-spawn object) ;; unknown type -;;(define-extern boat-fuelcell-idle object) ;; unknown type +(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 object) ;; unknown type +(define-extern boat-fuelcell-die (state boat-fuelcell)) ;; unknown type (define-extern *mis-bone-platform-sg* skeleton-group) -;;(define-extern *bone-platform-constants* object) ;; unknown type +(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 object) ;; unknown type -;;(define-extern breakaway-fall object) ;; unknown type -;;(define-extern breakaway-about-to-fall object) ;; unknown type +(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 object) ;; unknown type -;;(define-extern mis-bone-bridge-idle object) ;; unknown type -;;(define-extern mis-bone-bridge-hit object) ;; unknown type -;;(define-extern mis-bone-bridge-bump object) ;; unknown type +(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 object) ;; unknown type +(define-extern windturbine-idle (state windturbine)) ;; unknown type (define-extern *boatpaddle-sg* skeleton-group) -;;(define-extern boatpaddle-idle object) ;; unknown type +(define-extern boatpaddle-idle (state boatpaddle)) ;; unknown type ;; ---------------------- @@ -31939,7 +30762,8 @@ ) (deftype fireboulder (process-drawable) - ((tracker uint64 :offset-assert 176) + ((root-override collide-shape :score 100 :offset 112) + (tracker handle :offset-assert 176) ;; part-tracker (task uint8 :offset-assert 184) ) :method-count-assert 20 @@ -31948,168 +30772,90 @@ :flag-assert #x14005000b9 ) -; (deftype ceilingflag (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ceilingflag (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype exit-chamber-dummy (process-drawable) -; ((orig-trans vector :inline :offset-assert 176) -; (fcell-handle uint64 :offset-assert 192) -; ) -; :method-count-assert 21 -; :size-assert #xc8 -; :heap-base #x60 -; :flag-assert #x15006000c8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype exit-chamber-dummy (process-drawable) + ((orig-trans vector :inline :offset-assert 176) + (fcell-handle handle :offset-assert 192) + ) + :method-count-assert 21 + :size-assert #xc8 + :heap-base #x60 + :flag-assert #x15006000c8 + (:methods + (skip-reminder? (_type_) symbol 20) + ) + ) -; (deftype ogreboss-village2 (process-drawable) -; ((boulder uint64 :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype ogreboss-village2 (process-drawable) + ((boulder handle :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype villageb-ogreboss (ogreboss-village2) -; () -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villageb-ogreboss (ogreboss-village2) + () + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype villageb-water (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villageb-water (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) ;; - Functions -(define-extern boulder1-trans function) -(define-extern boulder2-trans function) -(define-extern boulder3-trans function) -(define-extern boulder4-trans function) -(define-extern boulder4-trans-2 function) -(define-extern boulder4-trans-3 function) -(define-extern boulder3-trans-2 function) -(define-extern boulder2-trans-2 function) -(define-extern fireboulder-disable-blocking-collision function) -(define-extern fireboulder-hover-stuff function) -(define-extern ogreboss-village2-trans function) +(define-extern boulder1-trans (function none :behavior fireboulder)) +(define-extern boulder2-trans (function none :behavior fireboulder)) +(define-extern boulder3-trans (function none :behavior fireboulder)) +(define-extern boulder4-trans (function none :behavior fireboulder)) +(define-extern boulder4-trans-2 (function none :behavior fireboulder)) +(define-extern boulder4-trans-3 (function none :behavior fireboulder)) +(define-extern boulder3-trans-2 (function none :behavior fireboulder)) +(define-extern boulder2-trans-2 (function none :behavior fireboulder)) +(define-extern fireboulder-disable-blocking-collision (function none :behavior fireboulder)) +(define-extern fireboulder-hover-stuff (function object :behavior fireboulder)) +(define-extern ogreboss-village2-trans (function none :behavior ogreboss-village2)) ;; - Unknowns -;;(define-extern ripple-for-villageb-water object) ;; unknown type +(define-extern ripple-for-villageb-water ripple-wave-set) ;; unknown type (define-extern *ogreboss-village2-sg* skeleton-group) -;;(define-extern ogreboss-village2-idle object) ;; unknown type -;;(define-extern ogreboss-village2-throw object) ;; unknown type +(define-extern ogreboss-village2-idle (state ogreboss-village2)) ;; unknown type +(define-extern ogreboss-village2-throw (state ogreboss-village2)) ;; unknown type (define-extern *fireboulder-sg* skeleton-group) (define-extern *exit-chamber-dummy-sg* skeleton-group) -;;(define-extern exit-chamber-dummy-wait-to-appear object) ;; unknown type -;;(define-extern exit-chamber-dummy-idle object) ;; unknown type +(define-extern exit-chamber-dummy-wait-to-appear (state exit-chamber-dummy)) ;; unknown type +(define-extern exit-chamber-dummy-idle (state exit-chamber-dummy)) ;; unknown type (define-extern *ceilingflag-sg* skeleton-group) -;;(define-extern ceilingflag-idle object) ;; unknown type -;;(define-extern fireboulder-idle object) ;; unknown type -;;(define-extern fireboulder-hover object) ;; unknown type -;;(define-extern fireboulder-be-clone object) ;; unknown type +(define-extern ceilingflag-idle (state ceilingflag)) ;; unknown type +(define-extern fireboulder-idle (state fireboulder)) ;; unknown type +(define-extern fireboulder-hover (state fireboulder)) ;; unknown type +(define-extern fireboulder-be-clone (state handle fireboulder)) ;; unknown type (define-extern *allpontoons-sg* skeleton-group) -;;(define-extern allpontoons-idle object) ;; unknown type -;;(define-extern allpontoons-be-clone object) ;; unknown type +(define-extern allpontoons-idle (state allpontoons)) ;; unknown type +(define-extern allpontoons-be-clone (state handle allpontoons)) ;; unknown type (define-extern *pontoonten-sg* skeleton-group) -;;(define-extern *pontoonten-constants* object) ;; unknown type +(define-extern *pontoonten-constants* rigid-body-platform-constants) ;; unknown type (define-extern *pontoonfive-sg* skeleton-group) -;;(define-extern *pontoonfive-constants* object) ;; unknown type -;;(define-extern pontoon-die object) ;; unknown type -;;(define-extern pontoon-hidden object) ;; unknown type +(define-extern *pontoonfive-constants* rigid-body-platform-constants) ;; unknown type +(define-extern pontoon-die (state pontoon)) ;; unknown type +(define-extern pontoon-hidden (state pontoon)) ;; unknown type (define-extern *village2cam-sg* skeleton-group) (define-extern *med-res-rolling-sg* skeleton-group) (define-extern *med-res-rolling1-sg* skeleton-group) @@ -32524,268 +31270,105 @@ ;; - Types -; (deftype swamp-spike (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; (open-gate basic :offset-assert 184) -; (dangerous basic :offset-assert 188) -; ) -; :method-count-assert 21 -; :size-assert #xc0 -; :heap-base #x50 -; :flag-assert #x15005000c0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype swamp-spike (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + (open-gate symbol :offset-assert 184) + (dangerous symbol :offset-assert 188) + ) + :method-count-assert 21 + :size-assert #xc0 + :heap-base #x50 + :flag-assert #x15005000c0 + (:methods + (init! (_type_) symbol 20) + ) + ) -; (deftype swampgate (swamp-spike) -; () -; :method-count-assert 21 -; :size-assert #xc0 -; :heap-base #x50 -; :flag-assert #x15005000c0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype swampgate (swamp-spike) + () + :method-count-assert 21 + :size-assert #xc0 + :heap-base #x50 + :flag-assert #x15005000c0 + ) -; (deftype balance-plat (process-drawable) -; ((y-travel float :offset-assert 176) -; (y-init float :offset-assert 180) -; (y-offset float :offset-assert 184) -; (y-vel float :offset-assert 188) -; (y-accel float :offset-assert 192) -; (got-grow basic :offset-assert 196) -; ) -; :method-count-assert 20 -; :size-assert #xc8 -; :heap-base #x60 -; :flag-assert #x14006000c8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype balance-plat (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (y-travel float :offset-assert 176) + (y-init float :offset-assert 180) + (y-offset float :offset-assert 184) + (y-vel float :offset-assert 188) + (y-accel float :offset-assert 192) + (got-grow symbol :offset-assert 196) + ) + :method-count-assert 20 + :size-assert #xc8 + :heap-base #x60 + :flag-assert #x14006000c8 + ) -; (deftype swamp-rock (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype swamp-rock (process-drawable) + ((root-override basic :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype tar-plat (rigid-body-platform) -; ((anchor-point vector :inline :offset-assert 736) -; (float-height float :offset-assert 752) -; ) -; :method-count-assert 35 -; :size-assert #x2f4 -; :heap-base #x290 -; :flag-assert #x23029002f4 -; ;; inherited inspect of rigid-body-platform -; (: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) -; ) -; ) +(deftype tar-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (float-height float :offset-assert 752) + ) + :method-count-assert 35 + :size-assert #x2f4 + :heap-base #x290 + :flag-assert #x23029002f4 + ) -; (deftype swamp-barrel (barrel) -; () -; :method-count-assert 30 -; :size-assert #x100 -; :heap-base #x90 -; :flag-assert #x1e00900100 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype swamp-barrel (barrel) + () + :method-count-assert 30 + :size-assert #x100 + :heap-base #x90 + :flag-assert #x1e00900100 + ) -; (deftype swampcam (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype swampcam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype swamp-battlecontroller (battlecontroller) -; () -; :method-count-assert 29 -; :size-assert #x27c -; :heap-base #x210 -; :flag-assert #x1d0210027c -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype swamp-battlecontroller (battlecontroller) + () + :method-count-assert 29 + :size-assert #x27c + :heap-base #x210 + :flag-assert #x1d0210027c + ) ;; - Functions -(define-extern swamp-spike-set-particle-rotation-callback function) -(define-extern swamp-spike-default-event-handler function) -(define-extern swamp-spike-post function) -(define-extern swamp-rock-init-by-other function) +(define-extern swamp-spike-set-particle-rotation-callback (function part-tracker none)) +(define-extern swamp-spike-default-event-handler (function process int symbol event-message-block object :behavior swamp-spike)) +(define-extern swamp-spike-post (function none :behavior swamp-spike)) +(define-extern swamp-rock-init-by-other (function vector none :behavior swamp-rock)) ;; - Unknowns (define-extern *swampcam-sg* skeleton-group) (define-extern *tar-plat-sg* skeleton-group) -;;(define-extern *tar-plat-constants* object) ;; unknown type +(define-extern *tar-plat-constants* rigid-body-platform-constants) ;; unknown type (define-extern *swamp-rock-sg* skeleton-group) -;;(define-extern swamp-rock-idle object) ;; unknown type -;;(define-extern swamp-rock-break object) ;; unknown type +(define-extern swamp-rock-idle (state swamp-rock)) ;; unknown type +(define-extern swamp-rock-break (state swamp-rock)) ;; unknown type (define-extern *balance-plat-sg* skeleton-group) -;;(define-extern balance-plat-idle object) ;; unknown type -;;(define-extern swamp-spike-gate-down object) ;; unknown type -;;(define-extern swamp-spike-gate-up object) ;; unknown type -;;(define-extern swamp-spike-idle object) ;; unknown type +(define-extern balance-plat-idle (state balance-plat)) ;; unknown type +(define-extern swamp-spike-gate-down (state swampgate)) ;; unknown type +(define-extern swamp-spike-gate-up (state swampgate)) ;; unknown type +(define-extern swamp-spike-idle (state swamp-spike)) ;; unknown type (define-extern *swamp-spike-sg* skeleton-group) @@ -33367,11 +31950,11 @@ :size-assert #x170 :flag-assert #xf00000170 (:methods - (TODO-RENAME-9 (_type_ int float cavecrystal) object 9) + (TODO-RENAME-9 (_type_ int float process-drawable) object 9) ;; last arg is a cavecrystal (TODO-RENAME-10 (_type_ vector) float 10) (inc-intensites! (_type_) int 11) (TODO-RENAME-12 (_type_) symbol 12) - (create-connection! (_type_ cavecrystal res-lump (function object object object object object) object object) connection 13) + (create-connection! (_type_ process-drawable res-lump (function object object object object object) object object) connection 13) ;; TODO - process-drawable is often a cavecrystal (execute-connections (_type_) int 14) ) ) @@ -33393,249 +31976,126 @@ ;; - Types -; (deftype maincavecam (pov-camera) -; ((seq uint64 :offset-assert 224) -; ) -; :method-count-assert 30 -; :size-assert #xe8 -; :heap-base #x80 -; :flag-assert #x1e008000e8 -; ;; inherited inspect of pov-camera -; (: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) -; ) -; ) +(deftype maincavecam (pov-camera) + ((seq uint64 :offset-assert 224) + ) + :method-count-assert 30 + :size-assert #xe8 + :heap-base #x80 + :flag-assert #x1e008000e8 + ) -; (deftype cave-water (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype cave-water (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) -; (deftype cavecrusher (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype cavecrusher (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype cavetrapdoor (process-drawable) -; ((delay-before-wiggle int32 :offset-assert 176) -; ) -; :method-count-assert 22 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x16005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype cavetrapdoor (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (delay-before-wiggle int32 :offset-assert 176) + ) + :method-count-assert 22 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x16005000b4 + (:methods + (idle () _type_ :state 20) + (trigger () _type_ :state 21) + ) + ) -; (deftype caveflamepots (process-drawable) -; ((shove-up float :offset-assert 176) -; (cycle-speed int32 :offset-assert 180) -; (cycle-pause int32 :offset-assert 184) -; (cycle-offset uint32 :offset-assert 188) -; (was-deadly? basic :offset-assert 192) -; (should-play-sound? basic :offset-assert 196) -; (launch-pos UNKNOWN 2 :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xf0 -; :heap-base #x80 -; :flag-assert #x14008000f0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype caveflamepots (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (shove-up float :offset-assert 176) + (cycle-speed int32 :offset-assert 180) + (cycle-pause int32 :offset-assert 184) + (cycle-offset uint32 :offset-assert 188) + (was-deadly? symbol :offset-assert 192) + (should-play-sound? symbol :offset-assert 196) + (launch-pos vector 2 :inline :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xf0 + :heap-base #x80 + :flag-assert #x14008000f0 + ) -; (deftype cavespatula (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype cavespatula (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype cavespatulatwo (process-drawable) -; ((sync sync-info :inline :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype cavespatulatwo (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (sync sync-info :inline :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype caveelevator (process-drawable) -; ((elev-mode uint64 :offset-assert 176) -; (elev-type int32 :offset-assert 184) -; (prev-frame-num float :offset-assert 188) -; (last-update-bounce-time uint64 :offset-assert 192) -; (orig-trans vector :inline :offset-assert 208) -; (sync sync-info :inline :offset-assert 224) -; (smush smush-control :inline :offset-assert 232) -; (anim UNKNOWN 2 :offset-assert 264) -; (wheel-ry-mat matrix :inline :offset-assert 272) -; ) -; :method-count-assert 22 -; :size-assert #x150 -; :heap-base #xe0 -; :flag-assert #x1600e00150 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype caveelevator (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (elev-mode uint64 :offset-assert 176) + (elev-type int32 :offset-assert 184) + (prev-frame-num float :offset-assert 188) + (last-update-bounce-time uint64 :offset-assert 192) + (orig-trans vector :inline :offset-assert 208) + (sync sync-info :inline :offset-assert 224) + (smush smush-control :inline :offset-assert 232) + (anim spool-anim 2 :offset-assert 264) + (wheel-ry-mat matrix :inline :offset-assert 272) + ) + :method-count-assert 22 + :size-assert #x150 + :heap-base #xe0 + :flag-assert #x1600e00150 + (:methods + (TODO-RENAME-20 (_type_) none 20) + (TODO-RENAME-21 (_type_) float 21) + ) + ) ;; - Functions -(define-extern caveelevator-joint-callback function) -(define-extern cavecrystal-light-control-caveelevator-callback function) +(define-extern caveelevator-joint-callback (function caveelevator none)) +(define-extern cavecrystal-light-control-caveelevator-callback (function (pointer cavecrystal) int float vector)) ;; - Unknowns (define-extern *caveelevator-sg* skeleton-group) -;;(define-extern caveelevator-cycle-active object) ;; unknown type -;;(define-extern caveelevator-one-way-idle-start object) ;; unknown type -;;(define-extern caveelevator-one-way-travel-to-start object) ;; unknown type -;;(define-extern caveelevator-one-way-idle-end object) ;; unknown type -;;(define-extern caveelevator-one-way-travel-to-end object) ;; unknown type +(define-extern caveelevator-cycle-active (state caveelevator)) ;; unknown type +(define-extern caveelevator-one-way-idle-start (state caveelevator)) ;; unknown type +(define-extern caveelevator-one-way-travel-to-start (state caveelevator)) ;; unknown type +(define-extern caveelevator-one-way-idle-end (state caveelevator)) ;; unknown type +(define-extern caveelevator-one-way-travel-to-end (state caveelevator)) ;; unknown type (define-extern *cavespatulatwo-sg* skeleton-group) -;;(define-extern cavespatulatwo-idle object) ;; unknown type +(define-extern cavespatulatwo-idle (state cavespatulatwo)) ;; unknown type (define-extern *cavespatula-darkcave-sg* skeleton-group) (define-extern *cavespatula-sg* skeleton-group) -;;(define-extern cavespatula-idle object) ;; unknown type -;;(define-extern caveflamepots-active object) ;; unknown type +(define-extern cavespatula-idle (state cavespatula)) ;; unknown type +(define-extern caveflamepots-active (state caveflamepots)) ;; unknown type (define-extern *cavetrapdoor-sg* skeleton-group) (define-extern *cavecrusher-sg* skeleton-group) -;;(define-extern cavecrusher-idle object) ;; unknown type -;;(define-extern ripple-for-cave-water object) ;; unknown type +(define-extern cavecrusher-idle (state cavecrusher)) ;; unknown type +(define-extern ripple-for-cave-water ripple-wave-set) ;; unknown type (define-extern *maincavecam-sg* skeleton-group) @@ -34372,82 +32832,21 @@ ;; - Types -; (deftype water-vol-deadly (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype water-vol-deadly (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype side-to-side-plat (plat) -; ((part-ry float :offset-assert 264) -; ) -; :method-count-assert 33 -; :size-assert #x10c -; :heap-base #xa0 -; :flag-assert #x2100a0010c -; ;; inherited inspect of plat -; (: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) -; ) -; ) +(deftype side-to-side-plat (plat) + ((part-ry float :offset-assert 264) + ) + :method-count-assert 33 + :size-assert #x10c + :heap-base #xa0 + :flag-assert #x2100a0010c + ) (deftype sunkencam (pov-camera) ((seq uint64 :offset-assert 224) @@ -34458,34 +32857,20 @@ :flag-assert #x1e008000e8 ) -; (deftype seaweed (process-drawable) -; ((anim-speed float :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype seaweed (process-drawable) + ((anim-speed float :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) ;; - Unknowns (define-extern *seaweed-sg* skeleton-group) -;;(define-extern *seaweed* object) ;; unknown type -;;(define-extern seaweed-idle object) ;; unknown type +(define-extern *seaweed* seaweed) ;; unknown type +(define-extern seaweed-idle (state seaweed)) ;; unknown type (define-extern *side-to-side-plat-sg* skeleton-group) (define-extern *sunkencam-sg* skeleton-group) @@ -35707,403 +34092,194 @@ ;; - Types -; (deftype rolling-part (part-spawner) -; () -; :method-count-assert 21 -; :size-assert #xd0 -; :heap-base #x60 -; :flag-assert #x15006000d0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype rolling-part (part-spawner) + ((root-override basic :offset 112)) + :method-count-assert 21 + :size-assert #xd0 + :heap-base #x60 + :flag-assert #x15006000d0 + ) -; (deftype rollingcam (process-hidden) -; ((name basic :offset-assert 4) -; (mask uint32 :offset-assert 8) -; (parent uint32 :offset-assert 12) -; (brother uint32 :offset-assert 16) -; (child uint32 :offset-assert 20) -; (ppointer uint32 :offset-assert 24) -; (self basic :offset-assert 28) -; (pool basic :offset-assert 32) -; (status basic :offset-assert 36) -; (pid int32 :offset-assert 40) -; (main-thread basic :offset-assert 44) -; (top-thread basic :offset-assert 48) -; (entity basic :offset-assert 52) -; (state basic :offset-assert 56) -; (trans-hook basic :offset-assert 60) -; (post-hook basic :offset-assert 64) -; (event-hook basic :offset-assert 68) -; (allocated-length int32 :offset-assert 72) -; (next-state basic :offset-assert 76) -; (heap-base uint32 :offset-assert 80) -; (heap-top uint32 :offset-assert 84) -; (heap-cur uint32 :offset-assert 88) -; (stack-frame-top basic :offset-assert 92) -; (heap kheap :inline :offset-assert 80) -; (connection-list 'connectable :inline :offset-assert 96) -; (stack UNKNOWN :dynamic :offset-assert 112) -; ) -; :method-count-assert 15 -; :size-assert #x70 -; :flag-assert #xf00000070 -; (: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) -; ) -; ) +(deftype rollingcam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) -; (deftype pusher-base (process-drawable) -; ((max-frame float :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype pusher-base (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (max-frame float :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype pusher (pusher-base) -; ((sync sync-info-paused :inline :offset-assert 180) -; (cyl cylinder :inline :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xf8 -; :heap-base #x90 -; :flag-assert #x14009000f8 -; ;; inherited inspect of pusher-base -; (: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) -; ) -; ) +(deftype pusher (pusher-base) + ((sync sync-info-paused :inline :offset-assert 180) + (cyl cylinder :inline :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xf8 + :heap-base #x90 + :flag-assert #x14009000f8 + ) -; (deftype gorge-pusher (pusher-base) -; ((min-frame float :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xb8 -; :heap-base #x50 -; :flag-assert #x14005000b8 -; ;; inherited inspect of pusher-base -; (: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) -; ) -; ) +(deftype gorge-pusher (pusher-base) + ((min-frame float :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xb8 + :heap-base #x50 + :flag-assert #x14005000b8 + ) -; (deftype dark-plant (process-drawable) -; ((num-alts int32 :offset-assert 176) -; (alts UNKNOWN 4 :offset-assert 180) -; ) -; :method-count-assert 20 -; :size-assert #xc4 -; :heap-base #x60 -; :flag-assert #x14006000c4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype dark-plant (process-drawable) + ((num-alts int32 :offset-assert 176) + (alts entity-actor 4 :offset-assert 180) + ) + :method-count-assert 20 + :size-assert #xc4 + :heap-base #x60 + :flag-assert #x14006000c4 + ) -; (deftype happy-plant (process-drawable) -; ((alt-actor basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype happy-plant (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (alt-actor entity-actor :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype race-time (structure) -; ((digit UNKNOWN 5 :offset-assert 0) -; ) -; :method-count-assert 9 -; :size-assert #x5 -; :flag-assert #x900000005 -; ) +(deftype race-time (structure) + ((digit int8 5 :offset-assert 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x5 + :flag-assert #x900000005 + ) -; (deftype rolling-start (process-drawable) -; ((whole-look lod-set :inline :offset-assert 176) -; (broken-look lod-set :inline :offset-assert 212) -; ) -; :method-count-assert 20 -; :size-assert #xf5 -; :heap-base #x90 -; :flag-assert #x14009000f5 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype rolling-start (process-drawable) + ((whole-look lod-set :inline :offset-assert 176) + (broken-look lod-set :inline :offset-assert 212) + ) + :method-count-assert 20 + :size-assert #xf5 + :heap-base #x90 + :flag-assert #x14009000f5 + ) -; (deftype gorge (process-drawable) -; ((coord matrix :inline :offset-assert 176) -; (radius float :offset-assert 240) -; (thickness float :offset-assert 244) -; ) -; :method-count-assert 20 -; :size-assert #xf8 -; :heap-base #x90 -; :flag-assert #x14009000f8 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype gorge (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (coord matrix :inline :offset-assert 176) + (radius float :offset-assert 240) + (thickness float :offset-assert 244) + ) + :method-count-assert 20 + :size-assert #xf8 + :heap-base #x90 + :flag-assert #x14009000f8 + ) -; (deftype gorge-start (gorge) -; ((tasks basic :offset-assert 248) -; (record-time race-time :inline :offset-assert 252) -; (this-time race-time :inline :offset-assert 257) -; (start-banner uint64 :offset-assert 264) -; (end-banner uint64 :offset-assert 272) -; (timer-pos-offset int32 :offset-assert 280) -; (ticker ticky :inline :offset-assert 288) -; ) -; :method-count-assert 20 -; :size-assert #x140 -; :heap-base #xd0 -; :flag-assert #x1400d00140 -; ;; inherited inspect of gorge -; (: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) -; ) -; ) +(deftype gorge-start (gorge) + ((tasks task-control :offset-assert 248) + (record-time race-time :inline :offset-assert 252) + (this-time race-time :inline :offset-assert 257) + (start-banner handle :offset-assert 264) + (end-banner handle :offset-assert 272) + (timer-pos-offset int32 :offset-assert 280) + (ticker ticky :inline :offset-assert 288) + ) + :method-count-assert 20 + :size-assert #x140 + :heap-base #xd0 + :flag-assert #x1400d00140 + ) -; (deftype gorge-finish (gorge) -; ((alt-actor basic :offset-assert 248) -; ) -; :method-count-assert 20 -; :size-assert #xfc -; :heap-base #x90 -; :flag-assert #x14009000fc -; ;; inherited inspect of gorge -; (: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) -; ) -; ) +(deftype gorge-finish (gorge) + ((alt-actor entity-actor :offset-assert 248) + ) + :method-count-assert 20 + :size-assert #xfc + :heap-base #x90 + :flag-assert #x14009000fc + ) -; (deftype gorge-abort (gorge) -; () -; :method-count-assert 20 -; :size-assert #xf8 -; :heap-base #x90 -; :flag-assert #x14009000f8 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype gorge-abort (gorge) + () + :method-count-assert 20 + :size-assert #xf8 + :heap-base #x90 + :flag-assert #x14009000f8 + ) -; (deftype rolling-water (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype rolling-water (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) ;; - Functions -(define-extern gorge-init function) -(define-extern gorge-in-front function) -(define-extern gorge-start-launch-start-banner function) -(define-extern gorge-trans function) -(define-extern gorge-start-draw-time function) -(define-extern gorge-behind function) -(define-extern seconds->race-time function) -(define-extern race-time-read function) -(define-extern rolling-start-init-by-other function) -(define-extern gorge-finish-init-by-other function) -(define-extern gorge-abort-init-by-other function) -(define-extern race-time->string function) -(define-extern race-time-less-than function) -(define-extern race-time-save function) -(define-extern dark-plants-all-done function) -(define-extern dark-plant-randomize function) -(define-extern dark-plant-check-target function) -(define-extern dark-plant-has-bad-neighbor function) -(define-extern pusher-base-init function) -(define-extern dark-plant-trans function) -(define-extern race-time-copy! function) -(define-extern race-time->seconds function) +(define-extern gorge-init (function vector vector float float float :behavior gorge)) +(define-extern gorge-in-front (function gorge symbol)) +(define-extern gorge-start-launch-start-banner (function handle :behavior gorge-start)) +(define-extern gorge-trans (function none)) +(define-extern gorge-start-draw-time (function symbol symbol none :behavior gorge-start)) +(define-extern gorge-behind (function gorge symbol)) +(define-extern seconds->race-time (function race-time int int)) +(define-extern race-time-read (function race-time int task-control int symbol)) +(define-extern rolling-start-init-by-other (function vector float none :behavior rolling-start)) +(define-extern gorge-finish-init-by-other (function vector vector float none :behavior gorge-finish)) +(define-extern gorge-abort-init-by-other (function vector vector float none :behavior gorge-abort)) +(define-extern race-time->string (function race-time string)) +(define-extern race-time-less-than (function race-time race-time symbol)) +(define-extern race-time-save (function race-time int task-control symbol)) +(define-extern dark-plants-all-done (function dark-plant symbol)) +(define-extern dark-plant-randomize (function dark-plant vector)) +(define-extern dark-plant-check-target (function dark-plant symbol)) +(define-extern dark-plant-has-bad-neighbor (function dark-plant symbol)) +(define-extern pusher-base-init (function collide-shape-moving :behavior pusher-base)) +(define-extern dark-plant-trans (function none :behavior dark-plant)) +(define-extern race-time-copy! (function race-time race-time symbol)) +(define-extern race-time->seconds (function race-time int)) ;; - Unknowns -;;(define-extern ripple-for-rolling-water object) ;; unknown type -;;(define-extern gorge-start-idle object) ;; unknown type -;;(define-extern gorge-start-ready object) ;; unknown type -;;(define-extern gorge-start-racing object) ;; unknown type -;;(define-extern gorge-start-race-finished object) ;; unknown type -;;(define-extern gorge-start-race-aborted object) ;; unknown type -;;(define-extern gorge-finish-idle object) ;; unknown type -;;(define-extern gorge-abort-idle object) ;; unknown type +(define-extern ripple-for-rolling-water object) ;; unknown type +(define-extern gorge-start-idle (state gorge-start)) ;; unknown type +(define-extern gorge-start-ready (state gorge-start)) ;; unknown type +(define-extern gorge-start-racing (state gorge-start)) ;; unknown type +(define-extern gorge-start-race-finished (state gorge-start)) ;; unknown type +(define-extern gorge-start-race-aborted (state gorge-start)) ;; unknown type +(define-extern gorge-finish-idle (state gorge-finish)) ;; unknown type +(define-extern gorge-abort-idle (state gorge-abort)) ;; unknown type (define-extern *rolling-start-whole-sg* skeleton-group) (define-extern *rolling-start-broken-sg* skeleton-group) -;;(define-extern rolling-start-whole object) ;; unknown type -;;(define-extern rolling-start-break object) ;; unknown type +(define-extern rolling-start-whole (state rolling-start)) ;; unknown type +(define-extern rolling-start-break (state rolling-start)) ;; unknown type (define-extern *happy-plant-sg* skeleton-group) -;;(define-extern happy-plant-opened object) ;; unknown type -;;(define-extern happy-plant-init object) ;; unknown type -;;(define-extern happy-plant-opening object) ;; unknown type +(define-extern happy-plant-opened (state happy-plant)) ;; unknown type +(define-extern happy-plant-init (state happy-plant)) ;; unknown type +(define-extern happy-plant-opening (state happy-plant)) ;; unknown type (define-extern *rollingcam-sg* skeleton-group) (define-extern *dark-plant-sg* skeleton-group) -;;(define-extern dark-plant-gone object) ;; unknown type -;;(define-extern dark-plant-startup object) ;; unknown type -;;(define-extern dark-plant-idle object) ;; unknown type -;;(define-extern dark-plant-sprout object) ;; unknown type -;;(define-extern dark-plant-death object) ;; unknown type +(define-extern dark-plant-gone (state dark-plant)) ;; unknown type +(define-extern dark-plant-startup (state dark-plant)) ;; unknown type +(define-extern dark-plant-idle (state dark-plant)) ;; unknown type +(define-extern dark-plant-sprout (state dark-plant)) ;; unknown type +(define-extern dark-plant-death (state dark-plant)) ;; unknown type (define-extern *pusher-sg* skeleton-group) -;;(define-extern gorge-pusher-idle object) ;; unknown type -;;(define-extern pusher-idle object) ;; unknown type +(define-extern gorge-pusher-idle (state gorge-pusher)) ;; unknown type +(define-extern pusher-idle (state pusher)) ;; unknown type ;; ---------------------- @@ -36409,84 +34585,45 @@ ;; - Types -; (deftype balloon (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype balloon (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype spike (process-drawable) -; ((num-alts int32 :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype spike (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (num-alts int32 :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype crate-darkeco-cluster (process-drawable) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype crate-darkeco-cluster (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) ;; - Unknowns (define-extern *crate-darkeco-cluster-sg* skeleton-group) (define-extern *spike-sg* skeleton-group) -;;(define-extern spike-down object) ;; unknown type -;;(define-extern spike-idle object) ;; unknown type -;;(define-extern spike-up object) ;; unknown type -;;(define-extern balloon-idle object) ;; unknown type -;;(define-extern balloon-popping object) ;; unknown type +(define-extern spike-down (state spike)) ;; unknown type +(define-extern spike-idle (state spike)) ;; unknown type +(define-extern spike-up (state spike)) ;; unknown type +(define-extern balloon-idle (state balloon)) ;; unknown type +(define-extern balloon-popping (state balloon)) ;; unknown type ;; ---------------------- @@ -36631,535 +34768,169 @@ ;; - Types -; (deftype tntbarrel (process-drawable) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype tntbarrel (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die (symbol) _type_ :state 21) + ) + ) -; (deftype ogre-plat (rigid-body-platform) -; ((anchor-point vector :inline :offset-assert 736) -; (idle-y-offset float :offset-assert 752) -; (float-y-offset float :offset-assert 756) -; (delay uint64 :offset-assert 760) -; (active basic :offset-assert 768) -; (triggered basic :offset-assert 772) -; ) -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; inherited inspect of rigid-body-platform -; (: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) -; ) -; ) +(deftype ogre-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (idle-y-offset float :offset-assert 752) + (float-y-offset float :offset-assert 756) + (delay uint64 :offset-assert 760) + (active symbol :offset-assert 768) + (triggered entity-actor :offset-assert 772) + ) + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-step (ogre-plat) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-step (ogre-plat) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-step-a (ogre-step) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-step-a (ogre-step) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-step-b (ogre-step) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-step-b (ogre-step) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-step-c (ogre-step) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-step-c (ogre-step) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-step-d (ogre-step) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-step-d (ogre-step) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-isle (ogre-plat) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-isle (ogre-plat) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-isle-b (ogre-isle) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-isle-b (ogre-isle) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-isle-c (ogre-isle) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-isle-c (ogre-isle) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-isle-d (ogre-isle) -; () -; :method-count-assert 35 -; :size-assert #x308 -; :heap-base #x2a0 -; :flag-assert #x2302a00308 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-isle-d (ogre-isle) + () + :method-count-assert 35 + :size-assert #x308 + :heap-base #x2a0 + :flag-assert #x2302a00308 + ) -; (deftype ogre-bridge (process-drawable) -; ((joint-mod-array UNKNOWN 8 :offset-assert 176) -; (dead-joint-count int8 :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xd1 -; :heap-base #x70 -; :flag-assert #x14007000d1 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype ogre-bridge (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (joint-mod-array joint-mod 8 :offset-assert 176) + (dead-joint-count int8 :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xd1 + :heap-base #x70 + :flag-assert #x14007000d1 + ) -; (deftype ogre-bridgeend (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype ogre-bridgeend (process-drawable) + ((root-override collide-shape :score 100 :offset 112)) + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype ogre-lava (water-anim) -; ((idle-anim int32 :offset-assert 220) -; (anim int32 :offset-assert 224) -; ) -; :method-count-assert 30 -; :size-assert #xe4 -; :heap-base #x80 -; :flag-assert #x1e008000e4 -; ;; inherited inspect of water-anim -; (: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) -; ) -; ) +(deftype ogre-lava (water-anim) + ((idle-anim int32 :offset-assert 220) + (anim int32 :offset-assert 224) + ) + :method-count-assert 30 + :size-assert #xe4 + :heap-base #x80 + :flag-assert #x1e008000e4 + ) -; (deftype shortcut-boulder (process-drawable) -; ((broken-look lod-set :inline :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xd1 -; :heap-base #x70 -; :flag-assert #x14007000d1 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype shortcut-boulder (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (broken-look lod-set :inline :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xd1 + :heap-base #x70 + :flag-assert #x14007000d1 + ) ;; - Functions -(define-extern ogre-bridge-update-joints function) +(define-extern ogre-bridge-update-joints (function none :behavior ogre-bridge)) ;; - Unknowns (define-extern *shortcut-boulder-whole-sg* skeleton-group) (define-extern *shortcut-boulder-broken-sg* skeleton-group) -;;(define-extern shortcut-boulder-idle object) ;; unknown type -;;(define-extern shortcut-boulder-break object) ;; unknown type -;;(define-extern ripple-for-ogre-lava object) ;; unknown type +(define-extern shortcut-boulder-idle (state shortcut-boulder)) ;; unknown type +(define-extern shortcut-boulder-break (state shortcut-boulder)) ;; unknown type +(define-extern ripple-for-ogre-lava ripple-wave-set) ;; unknown type (define-extern *ogre-bridgeend-sg* skeleton-group) -;;(define-extern ogre-bridgeend-idle object) ;; unknown type +(define-extern ogre-bridgeend-idle (state ogre-bridgeend)) ;; unknown type (define-extern *ogre-bridge-sg* skeleton-group) -;;(define-extern *ogre-bridge-joint-array* object) ;; unknown type -;;(define-extern ogre-bridge-activated object) ;; unknown type -;;(define-extern ogre-bridge-idle object) ;; unknown type -;;(define-extern ogre-bridge-break object) ;; unknown type -;;(define-extern ogre-bridge-activate object) ;; unknown type +(define-extern *ogre-bridge-joint-array* (array uint8)) ;; unknown type +(define-extern ogre-bridge-activated (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-idle (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-break (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-activate (state ogre-bridge)) ;; unknown type (define-extern *ogre-isle-d-sg* skeleton-group) (define-extern *ogre-isle-b-sg* skeleton-group) -;;(define-extern *ogre-isle-constants* object) ;; unknown type +(define-extern *ogre-isle-constants* rigid-body-platform-constants) ;; unknown type (define-extern *ogre-step-b-sg* skeleton-group) (define-extern *ogre-step-c-sg* skeleton-group) (define-extern *ogre-step-a-sg* skeleton-group) -;;(define-extern *ogre-step-constants* object) ;; unknown type +(define-extern *ogre-step-constants* rigid-body-platform-constants) ;; unknown type (define-extern *tntbarrel-sg* skeleton-group) (define-extern *med-res-snow-sg* skeleton-group) (define-extern *ogre-isle-a-sg* skeleton-group) @@ -37268,118 +35039,59 @@ ;; - Types -; (deftype villagec-lava (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype villagec-lava (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) -; (deftype gondola (process-drawable) -; ((anim basic :offset-assert 176) -; (old-target-pos transformq :inline :offset-assert 192) -; ) -; :method-count-assert 23 -; :size-assert #xf0 -; :heap-base #x80 -; :flag-assert #x17008000f0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype gondola (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (anim spool-anim :offset-assert 176) + (old-target-pos transformq :inline :offset-assert 192) + ) + :method-count-assert 23 + :size-assert #xf0 + :heap-base #x80 + :flag-assert #x17008000f0 + (:methods + (idle (symbol) _type_ :state 20) + (ride-up () _type_ :state 21) + (ride-down () _type_ :state 22) + ) + ) -; (deftype pistons (process-drawable) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype pistons (process-drawable) + () + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (active (basic symbol) _type_ :state 21) + ) + ) -; (deftype gondolacables (process-drawable) -; () -; :method-count-assert 21 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x15004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype gondolacables (process-drawable) + () + :method-count-assert 21 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) ;; - Unknowns (define-extern *gondolacables-sg* skeleton-group) (define-extern *pistons-sg* skeleton-group) (define-extern *gondola-sg* skeleton-group) -;;(define-extern ripple-for-villagec-lava object) ;; unknown type +(define-extern ripple-for-villagec-lava ripple-wave-set) ;; unknown type (define-extern *med-res-ogre-sg* skeleton-group) (define-extern *med-res-ogre2-sg* skeleton-group) (define-extern *med-res-ogre3-sg* skeleton-group) @@ -37817,278 +35529,143 @@ ;; - Types -; (deftype snowcam (pov-camera) -; ((seq uint64 :offset-assert 224) -; ) -; :method-count-assert 30 -; :size-assert #xe8 -; :heap-base #x80 -; :flag-assert #x1e008000e8 -; ;; inherited inspect of pov-camera -; (: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) -; ) -; ) +(deftype snowcam (pov-camera) + ((seq uint64 :offset-assert 224) + ) + :method-count-assert 30 + :size-assert #xe8 + :heap-base #x80 + :flag-assert #x1e008000e8 + ) -; (deftype snow-eggtop (process-drawable) -; ((spawn-trans vector :inline :offset-assert 176) -; (play-sound? basic :offset-assert 192) -; ) -; :method-count-assert 20 -; :size-assert #xc4 -; :heap-base #x60 -; :flag-assert #x14006000c4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-eggtop (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (spawn-trans vector :inline :offset-assert 176) + (play-sound? symbol :offset-assert 192) + ) + :method-count-assert 20 + :size-assert #xc4 + :heap-base #x60 + :flag-assert #x14006000c4 + ) -; (deftype snowpusher (process-drawable) -; ((max-frame float :offset-assert 176) -; (open-sound uint128 :offset-assert 192) -; (close-sound uint128 :offset-assert 208) -; (sync sync-info-paused :inline :offset-assert 224) -; ) -; :method-count-assert 20 -; :size-assert #xf0 -; :heap-base #x80 -; :flag-assert #x14008000f0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snowpusher (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (max-frame float :offset-assert 176) + (open-sound uint128 :offset-assert 192) + (close-sound uint128 :offset-assert 208) + (sync sync-info-paused :inline :offset-assert 224) + ) + :method-count-assert 20 + :size-assert #xf0 + :heap-base #x80 + :flag-assert #x14008000f0 + ) -; (deftype snow-spatula (baseplat) -; ((sync sync-info :inline :offset-assert 228) -; (startmat matrix :inline :offset-assert 240) -; ) -; :method-count-assert 27 -; :size-assert #x130 -; :heap-base #xc0 -; :flag-assert #x1b00c00130 -; ;; inherited inspect of baseplat -; (: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) -; ) -; ) +(deftype snow-spatula (baseplat) + ((sync sync-info :inline :offset-assert 228) + (startmat matrix :inline :offset-assert 240) + ) + :method-count-assert 27 + :size-assert #x130 + :heap-base #xc0 + :flag-assert #x1b00c00130 + ) -; (deftype snow-fort-gate (process-drawable) -; ((part2 basic :offset-assert 176) -; (part3 basic :offset-assert 180) -; (open-trans vector :inline :offset-assert 192) -; (closed-trans vector :inline :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xe0 -; :heap-base #x70 -; :flag-assert #x14007000e0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-fort-gate (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (part2 sparticle-launch-control :offset-assert 176) + (part3 sparticle-launch-control :offset-assert 180) + (open-trans vector :inline :offset-assert 192) + (closed-trans vector :inline :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xe0 + :heap-base #x70 + :flag-assert #x14007000e0 + ) -; (deftype snow-gears (process-drawable) -; () -; :method-count-assert 21 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x15004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype snow-gears (process-drawable) + () + :method-count-assert 21 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x15004000b0 + (:methods + (TODO-RENAME-20 (_type_) none 20) + ) + ) -; (deftype snow-switch (process-drawable) -; ((pressed? basic :offset-assert 176) -; (fcell-handle uint64 :offset-assert 184) -; (orig-trans vector :inline :offset-assert 192) -; ) -; :method-count-assert 20 -; :size-assert #xd0 -; :heap-base #x60 -; :flag-assert #x14006000d0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-switch (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (pressed? symbol :offset-assert 176) + (fcell-handle handle :offset-assert 184) + (orig-trans vector :inline :offset-assert 192) + ) + :method-count-assert 20 + :size-assert #xd0 + :heap-base #x60 + :flag-assert #x14006000d0 + ) -; (deftype snow-log (process-drawable) -; ((master basic :offset-assert 176) -; ) -; :method-count-assert 20 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x14005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-log (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (master entity-actor :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x14005000b4 + ) -; (deftype snow-log-button (process-drawable) -; ((log basic :offset-assert 176) -; (orig-trans vector :inline :offset-assert 192) -; ) -; :method-count-assert 20 -; :size-assert #xd0 -; :heap-base #x60 -; :flag-assert #x14006000d0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-log-button (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (log entity-actor :offset-assert 176) + (orig-trans vector :inline :offset-assert 192) + ) + :method-count-assert 20 + :size-assert #xd0 + :heap-base #x60 + :flag-assert #x14006000d0 + ) ;; - Functions -(define-extern snow-switch-event-handler function) -(define-extern snow-log-button-event-handler function) +(define-extern snow-switch-event-handler (function process int symbol event-message-block object :behavior snow-switch)) +(define-extern snow-log-button-event-handler (function process int symbol event-message-block object :behavior snow-log-button)) ;; - Unknowns (define-extern *snow-switch-sg* skeleton-group) -;;(define-extern snow-log-button-idle-down object) ;; unknown type -;;(define-extern snow-log-button-idle-up object) ;; unknown type -;;(define-extern snow-log-button-activate object) ;; unknown type +(define-extern snow-log-button-idle-down (state snow-log-button)) ;; unknown type +(define-extern snow-log-button-idle-up (state snow-log-button)) ;; unknown type +(define-extern snow-log-button-activate (state snow-log-button)) ;; unknown type (define-extern *snow-log-sg* skeleton-group) -;;(define-extern snow-log-wait-for-master object) ;; unknown type -;;(define-extern snow-log-active object) ;; unknown type -;;(define-extern snow-log-activate object) ;; unknown type -;;(define-extern snow-log-hidden object) ;; unknown type -;;(define-extern snow-switch-idle-down object) ;; unknown type -;;(define-extern snow-switch-idle-up object) ;; unknown type +(define-extern snow-log-wait-for-master (state snow-log)) ;; unknown type +(define-extern snow-log-active (state snow-log)) ;; unknown type +(define-extern snow-log-activate (state snow-log)) ;; unknown type +(define-extern snow-log-hidden (state snow-log)) ;; unknown type +(define-extern snow-switch-idle-down (state snow-switch)) ;; unknown type +(define-extern snow-switch-idle-up (state snow-switch)) ;; unknown type (define-extern *snowcam-sg* skeleton-group) -;;(define-extern snow-switch-activate object) ;; unknown type +(define-extern snow-switch-activate (state snow-switch)) ;; unknown type (define-extern *snow-gears-sg* skeleton-group) -;;(define-extern snow-gears-idle object) ;; unknown type -;;(define-extern snow-gears-stopped object) ;; unknown type -;;(define-extern snow-gears-halt object) ;; unknown type -;;(define-extern snow-gears-activate object) ;; unknown type +(define-extern snow-gears-idle (state snow-gears)) ;; unknown type +(define-extern snow-gears-stopped (state snow-gears)) ;; unknown type +(define-extern snow-gears-halt (state snow-gears)) ;; unknown type +(define-extern snow-gears-activate (state snow-gears)) ;; unknown type (define-extern *snow-fort-gate-sg* skeleton-group) -;;(define-extern snow-fort-gate-idle-open object) ;; unknown type -;;(define-extern snow-fort-gate-idle-closed object) ;; unknown type -;;(define-extern snow-fort-gate-activate object) ;; unknown type +(define-extern snow-fort-gate-idle-open (state snow-fort-gate)) ;; unknown type +(define-extern snow-fort-gate-idle-closed (state snow-fort-gate)) ;; unknown type +(define-extern snow-fort-gate-activate (state snow-fort-gate)) ;; unknown type (define-extern *snow-spatula-sg* skeleton-group) -;;(define-extern snow-spatula-idle object) ;; unknown type +(define-extern snow-spatula-idle (state snow-spatula)) ;; unknown type (define-extern *snowpusher-sg* skeleton-group) -;;(define-extern snowpusher-idle object) ;; unknown type +(define-extern snowpusher-idle (state snowpusher)) ;; unknown type (define-extern *snow-eggtop-sg* skeleton-group) -;;(define-extern snow-eggtop-idle-down object) ;; unknown type -;;(define-extern snow-eggtop-idle-up object) ;; unknown type -;;(define-extern snow-eggtop-activate object) ;; unknown type +(define-extern snow-eggtop-idle-down (state snow-eggtop)) ;; unknown type +(define-extern snow-eggtop-idle-up (state snow-eggtop)) ;; unknown type +(define-extern snow-eggtop-activate (state snow-eggtop)) ;; unknown type ;; ---------------------- @@ -38099,201 +35676,80 @@ ;; - Types -; (deftype flutflut-plat (plat) -; ((has-path? basic :offset-assert 264) -; (plat-type int32 :offset-assert 268) -; (rise-time int32 :offset-assert 272) -; (fall-time int32 :offset-assert 276) -; (part-ry float :offset-assert 280) -; (sync-starting-val float :offset-assert 284) -; (flutflut-button basic :offset-assert 288) -; (appear-trans-top vector :inline :offset-assert 304) -; (appear-trans-bottom vector :inline :offset-assert 320) -; (appear-quat-top quaternion :inline :offset-assert 336) -; (appear-quat-bottom quaternion :inline :offset-assert 352) -; (start-trans vector :inline :offset-assert 368) -; ) -; :method-count-assert 33 -; :size-assert #x180 -; :heap-base #x110 -; :flag-assert #x2101100180 -; ;; inherited inspect of plat -; (: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) -; ) -; ) +(deftype flutflut-plat (plat) + ((has-path? symbol :offset-assert 264) + (plat-type int32 :offset-assert 268) + (rise-time int32 :offset-assert 272) + (fall-time int32 :offset-assert 276) + (part-ry float :offset-assert 280) + (sync-starting-val float :offset-assert 284) + (flutflut-button entity-actor :offset-assert 288) + (appear-trans-top vector :inline :offset-assert 304) + (appear-trans-bottom vector :inline :offset-assert 320) + (appear-quat-top quaternion :inline :offset-assert 336) + (appear-quat-bottom quaternion :inline :offset-assert 352) + (start-trans vector :inline :offset-assert 368) + ) + :method-count-assert 33 + :size-assert #x180 + :heap-base #x110 + :flag-assert #x2101100180 + ) -; (deftype snow-button (process-drawable) -; ((wiggled? basic :offset-assert 176) -; (timeout uint64 :offset-assert 184) -; (delay-til-wiggle uint64 :offset-assert 192) -; (prev-button basic :offset-assert 200) -; (ticker ticky :inline :offset-assert 208) -; ) -; :method-count-assert 20 -; :size-assert #xf0 -; :heap-base #x80 -; :flag-assert #x14008000f0 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype snow-button (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112) + (wiggled? symbol :offset-assert 176) + (timeout uint64 :offset-assert 184) + (delay-til-wiggle uint64 :offset-assert 192) + (prev-button entity-actor :offset-assert 200) + (ticker ticky :inline :offset-assert 208) + ) + :method-count-assert 20 + :size-assert #xf0 + :heap-base #x80 + :flag-assert #x14008000f0 + ) -; (deftype flutflut-plat-small (flutflut-plat) -; () -; :method-count-assert 33 -; :size-assert #x180 -; :heap-base #x110 -; :flag-assert #x2101100180 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype flutflut-plat-small (flutflut-plat) + () + :method-count-assert 33 + :size-assert #x180 + :heap-base #x110 + :flag-assert #x2101100180 + ) -; (deftype flutflut-plat-med (flutflut-plat) -; () -; :method-count-assert 33 -; :size-assert #x180 -; :heap-base #x110 -; :flag-assert #x2101100180 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype flutflut-plat-med (flutflut-plat) + () + :method-count-assert 33 + :size-assert #x180 + :heap-base #x110 + :flag-assert #x2101100180 + ) -; (deftype flutflut-plat-large (flutflut-plat) -; () -; :method-count-assert 33 -; :size-assert #x180 -; :heap-base #x110 -; :flag-assert #x2101100180 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype flutflut-plat-large (flutflut-plat) + () + :method-count-assert 33 + :size-assert #x180 + :heap-base #x110 + :flag-assert #x2101100180 + ) ;; - Unknowns (define-extern *flutflut-plat-large-sg* skeleton-group) (define-extern *flutflut-plat-med-sg* skeleton-group) (define-extern *flutflut-plat-small-sg* skeleton-group) -;;(define-extern elevator-idle-at-cave object) ;; unknown type -;;(define-extern elevator-travel-to-cave object) ;; unknown type -;;(define-extern elevator-idle-at-fort object) ;; unknown type -;;(define-extern elevator-travel-to-fort object) ;; unknown type -;;(define-extern flutflut-plat-hidden-idle object) ;; unknown type -;;(define-extern flutflut-plat-hide object) ;; unknown type -;;(define-extern flutflut-plat-appear object) ;; unknown type +(define-extern elevator-idle-at-cave (state flutflut-plat)) ;; unknown type +(define-extern elevator-travel-to-cave (state flutflut-plat)) ;; unknown type +(define-extern elevator-idle-at-fort (state flutflut-plat)) ;; unknown type +(define-extern elevator-travel-to-fort (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-hidden-idle (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-hide (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-appear (state flutflut-plat)) ;; unknown type (define-extern *snow-button-sg* skeleton-group) -;;(define-extern snow-button-up-idle object) ;; unknown type -;;(define-extern snow-button-deactivate object) ;; unknown type -;;(define-extern snow-button-activate object) ;; unknown type +(define-extern snow-button-up-idle (state snow-button)) ;; unknown type +(define-extern snow-button-deactivate (state snow-button)) ;; unknown type +(define-extern snow-button-activate (state snow-button)) ;; unknown type ;; ---------------------- @@ -38573,83 +36029,42 @@ ;; - Types -; (deftype lavabase (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavabase (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype lavafall (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavafall (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype lavashortcut (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavashortcut (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype darkecobarrel-leak (structure) -; ((offset vector :inline :offset-assert 0) -; (first-frame basic :offset-assert 16) -; ) -; :method-count-assert 9 -; :size-assert #x14 -; :flag-assert #x900000014 -; ) +(deftype darkecobarrel-leak (structure) + ((offset vector :inline :offset-assert 0) + (first-frame basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) (deftype darkecobarrel-base (process-drawable) - ((speed float :offset-assert 176) + ((root-override collide-shape-moving :score 100 :offset 112) + (speed float :offset-assert 176) (sync uint64 :offset-assert 184) ) :method-count-assert 20 @@ -38658,238 +36073,122 @@ :flag-assert #x14005000c0 ) -; (deftype darkecobarrel-mover (darkecobarrel-base) -; ((start-time uint64 :offset-assert 192) -; (hits int32 :offset-assert 200) -; (leak UNKNOWN 1 :offset-assert 208) -; (y-offset bouncing-float :inline :offset-assert 240) -; (y-offset-tgt delayed-rand-float :inline :offset-assert 280) -; (down oscillating-vector :inline :offset-assert 320) -; (down-tgt delayed-rand-vector :inline :offset-assert 384) -; ) -; :method-count-assert 20 -; :size-assert #x1b0 -; :heap-base #x140 -; :flag-assert #x14014001b0 -; ;; inherited inspect of darkecobarrel-base -; (: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) -; ) -; ) +(deftype darkecobarrel-mover (darkecobarrel-base) + ((start-time uint64 :offset-assert 192) + (hits int32 :offset-assert 200) + (leak darkecobarrel-leak 1 :inline :offset-assert 208) + (y-offset bouncing-float :inline :offset-assert 240) + (y-offset-tgt delayed-rand-float :inline :offset-assert 280) + (down oscillating-vector :inline :offset-assert 320) + (down-tgt delayed-rand-vector :inline :offset-assert 384) + ) + :method-count-assert 20 + :size-assert #x1b0 + :heap-base #x140 + :flag-assert #x14014001b0 + ) -; (deftype darkecobarrel (darkecobarrel-base) -; ((spawn-array basic :offset-assert 192) -; (cur-spawn int32 :offset-assert 196) -; ) -; :method-count-assert 20 -; :size-assert #xc8 -; :heap-base #x60 -; :flag-assert #x14006000c8 -; ;; inherited inspect of darkecobarrel-base -; (: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) -; ) -; ) +(deftype darkecobarrel (darkecobarrel-base) + ((self-override darkecobarrel :score 100 :offset 28) + (spawn-array (array handle) :offset-assert 192) ;; likely to darkecobarrels + (cur-spawn int32 :offset-assert 196) + ) + :method-count-assert 20 + :size-assert #xc8 + :heap-base #x60 + :flag-assert #x14006000c8 + ) -; (deftype lavafallsewera (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavafallsewera (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype lavafallsewerb (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavafallsewerb (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) -; (deftype chainmine (process-drawable) -; () -; :method-count-assert 22 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x16004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype chainmine (process-drawable) + ((root-override collide-shape-moving :score 100 :offset 112)) + :method-count-assert 22 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x16004000b0 + (:methods + (die () _type_ :state 20) + (idle () _type_ :state 21) + ) + ) -; (deftype lavaballoon (process-drawable) -; ((move-per-tick float :offset-assert 176) -; ) -; :method-count-assert 22 -; :size-assert #xb4 -; :heap-base #x50 -; :flag-assert #x16005000b4 -; ;; inherited inspect of process-drawable -; (: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) -; ) -; ) +(deftype lavaballoon (process-drawable) + ((root-override collide-shape :score 100 :offset 112) + (move-per-tick float :offset-assert 176) + ) + :method-count-assert 22 + :size-assert #xb4 + :heap-base #x50 + :flag-assert #x16005000b4 + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) -; (deftype lavatube-lava (water-anim) -; () -; :method-count-assert 30 -; :size-assert #xdc -; :heap-base #x70 -; :flag-assert #x1e007000dc -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavatube-lava (water-anim) + () + :method-count-assert 30 + :size-assert #xdc + :heap-base #x70 + :flag-assert #x1e007000dc + ) -; (deftype lavayellowtarp (process-drawable) -; () -; :method-count-assert 20 -; :size-assert #xb0 -; :heap-base #x40 -; :flag-assert #x14004000b0 -; ;; not enough basic ops -; (: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) -; ) -; ) +(deftype lavayellowtarp (process-drawable) + () + :method-count-assert 20 + :size-assert #xb0 + :heap-base #x40 + :flag-assert #x14004000b0 + ) ;; - Functions -(define-extern darkecobarrel-base-init function) -(define-extern darkecobarrel-base-time function) -(define-extern darkecobarrel-cycle-time function) -(define-extern darkecobarrel-advance-curspawn function) -(define-extern darkecobarrel-mover-init-by-other function) -(define-extern darkecobarrel-base-done? function) -(define-extern darkecobarrel-base-pos function) -(define-extern darkecobarrel-mover-pos function) +(define-extern darkecobarrel-base-init (function res-lump path-control-flag :behavior darkecobarrel-base)) +(define-extern darkecobarrel-base-time (function int :behavior darkecobarrel-base)) +(define-extern darkecobarrel-cycle-time (function handle :behavior darkecobarrel)) ;; likely to darkecobarrels +(define-extern darkecobarrel-advance-curspawn (function none :behavior darkecobarrel)) +(define-extern darkecobarrel-mover-init-by-other (function res-lump float uint uint none :behavior darkecobarrel-mover)) +(define-extern darkecobarrel-base-done? (function float symbol :behavior darkecobarrel-base)) +(define-extern darkecobarrel-base-pos (function int float :behavior darkecobarrel-base)) +(define-extern darkecobarrel-mover-pos (function uint :behavior darkecobarrel-mover)) ;; - Unknowns (define-extern *lavayellowtarp-sg* skeleton-group) -;;(define-extern lavayellowtarp-idle object) ;; unknown type -;;(define-extern ripple-for-lavatube-lava object) ;; unknown type +(define-extern lavayellowtarp-idle (state lavayellowtarp)) ;; unknown type +(define-extern ripple-for-lavatube-lava ripple-wave-set) ;; unknown type (define-extern *lavaballoon-sg* skeleton-group) (define-extern *chainmine-sg* skeleton-group) (define-extern *lavafallsewerb-sg* skeleton-group) -;;(define-extern lavafallsewerb-idle object) ;; unknown type +(define-extern lavafallsewerb-idle (state lavafallsewerb)) ;; unknown type (define-extern *lavafallsewera-sg* skeleton-group) -;;(define-extern lavafallsewera-idle object) ;; unknown type -;;(define-extern darkecobarrel-spawner object) ;; unknown type -;;(define-extern darkecobarrel-mover-move object) ;; unknown type -;;(define-extern darkecobarrel-mover-die object) ;; unknown type +(define-extern lavafallsewera-idle (state lavafallsewera)) ;; unknown type +(define-extern darkecobarrel-spawner (state darkecobarrel)) ;; unknown type +(define-extern darkecobarrel-mover-move (state darkecobarrel-mover)) ;; unknown type +(define-extern darkecobarrel-mover-die (state darkecobarrel-mover)) ;; unknown type (define-extern *darkecobarrel-sg* skeleton-group) (define-extern *lavashortcut-sg* skeleton-group) -;;(define-extern lavashortcut-idle object) ;; unknown type +(define-extern lavashortcut-idle (state lavashortcut)) ;; unknown type (define-extern *lavafall-sg* skeleton-group) -;;(define-extern lavafall-idle object) ;; unknown type +(define-extern lavafall-idle (state lavafall)) ;; unknown type (define-extern *lavabase-sg* skeleton-group) -;;(define-extern lavabase-idle object) ;; unknown type +(define-extern lavabase-idle (state lavabase)) ;; unknown type ;; ---------------------- @@ -41023,52 +38322,51 @@ ;; - Types (deftype logo (process-drawable) - ((camera uint64 :offset-assert 176) - (camera-anim uint64 :offset-assert 184) - (volumes uint64 :offset-assert 192) - (black uint64 :offset-assert 200) - (target uint64 :offset-assert 208) - (sidekick uint64 :offset-assert 216) - (main-joint basic :offset-assert 224) - (anim basic :offset-assert 228) - (next-anim basic :offset-assert 232) - (done? basic :offset-assert 236) + ((camera handle :offset-assert 176) + (camera-anim handle :offset-assert 184) + (volumes handle :offset-assert 192) + (black handle :offset-assert 200) + (target handle :offset-assert 208) + (sidekick handle :offset-assert 216) + (main-joint joint-mod :offset-assert 224) + (anim spool-anim :offset-assert 228) + (next-anim spool-anim :offset-assert 232) + (done? symbol :offset-assert 236) ) :heap-base #x80 :method-count-assert 24 :size-assert #xf0 :flag-assert #x18008000f0 - ;; inherited inspect of process-drawable (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) + (idle () _type_ :state 20) + (startup () _type_ :state 21) + (hidden () _type_ :state 22) + (ndi () _type_ :state 23) ) ) (deftype logo-slave (process-drawable) - ((main-joint basic :offset-assert 176) + ((parent-process (pointer logo) :score 100 :offset 12) + (main-joint joint-mod :offset-assert 176) ) :heap-base #x50 :method-count-assert 21 :size-assert #xb4 :flag-assert #x15005000b4 - ;; inherited inspect of process-drawable (:methods - (dummy-20 () none 20) + (idle () _type_ :state 20) ) ) ;; - Functions -(define-extern logo-slave-init-by-other function) -(define-extern logo-init-by-other function) +(define-extern logo-slave-init-by-other (function entity skeleton-group none :behavior logo-slave)) +(define-extern logo-init-by-other (function entity vector symbol none :behavior logo)) ;; - Unknowns -;;(define-extern target-title-play object) ;; unknown type -;;(define-extern target-title-wait object) ;; unknown type +(define-extern target-title-play (state target)) ;; unknown type +(define-extern target-title-wait (state target)) ;; unknown type (define-extern *logo-japan-sg* skeleton-group) (define-extern *logo-sg* skeleton-group) (define-extern *ndi-sg* skeleton-group) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index cb434cc4f4..4e086aba6e 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -592,8 +592,6 @@ "title-obs": [[0, "(function none)"]], - "title-obs": [[0, "(function none)"]], - "misty-warehouse": [ [3, "(function symbol none :behavior silostep)"], [4, "(function none :behavior silostep)"], @@ -807,5 +805,17 @@ [46, "(function float :behavior manipy)"] ], + "beach-obs": [ + [8, "(function none :behavior camera-tracker)"] + ], + + "jungleb-obs": [ + [4, "(function none :behavior camera-tracker)"] + ], + + "village2-obs": [ + [4, "(function sparticle-launch-control :behavior ogreboss-village2)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 50da450fb3..a7e102124b 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -353,9 +353,7 @@ "mistycannon-find-best-solution", "target-flut-falling-anim-trans", "kermit-check-to-hit-player?", - "(anon-function 6 title-obs)", "(anon-function 36 mistycannon)", - "(anon-function 43 maincave-obs)", "(anon-function 2 target-tube)", "(anon-function 5 orbit-plat)", "(anon-function 2 ogreboss)" diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index c84b92accf..04154c37e7 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1174,6 +1174,72 @@ ["L101", "attack-info"] ], + "citadel-obs": [ + ["L265", "attack-info"] + ], + + "jungleb-obs": [ + ["L34", "vector"] + ], + + "jungle-obs": [ + ["L164", "attack-info"] + ], + + "misty-obs": [ + ["L135", "rigid-body-platform-constants"] + ], + + "village2-obs": [ + ["L274", "rigid-body-platform-constants"], + ["L275", "rigid-body-platform-constants"], + ["L288", "vector"] + ], + + "swamp-obs": [ + ["L85", "rigid-body-platform-constants"], + ["L109", "attack-info"] + ], + + "maincave-obs": [ + ["L159", "vector"], + ["L160", "vector"], + ["L175", "attack-info"], + ["L176", "attack-info"] + ], + + "sunken-obs": [ + ["L43", "vector"], + ["L45", "vector"], + ["L47", "vector"], + ["L49", "vector"], + ["L51", "vector"] + ], + + "rolling-obs": [ + ["L234", "vector"], + ["L257", "vector"] + ], + + "firecanyon-obs": [ + ["L57", "attack-info"] + ], + + "ogre-obs": [ + ["L141", "rigid-body-platform-constants"], + ["L142", "rigid-body-platform-constants"], + ["L156", "attack-info"] + ], + + "snow-obs": [ + ["L201", "vector"] + ], + + "lavatube-obs": [ + ["L162", "attack-info"], + ["L194", "attack-info"] + ], + // 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 2f09e689c5..46d2f14308 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -1595,7 +1595,6 @@ [96, "vector"], [112, "vector"] ], - "cam-bike-code": [ [16, "matrix"], [80, "vector"], @@ -1816,6 +1815,582 @@ "ambient-type-sound": [[32, "sound-spec"]], "ambient-type-sound-loop": [[16, "sound-spec"]], + "(trans windmill-one-idle)": [ + [16, "vector"] + ], + + "move-grottopole-to-position": [ + [16, "vector"] + ], + + "flying-rock-init-by-other": [ + [16, "vector"] + ], + + "(event flutflutegg-idle)": [ + [16, "vector"] + ], + + "(trans flutflutegg-idle)": [ + [16, "vector"] + ], + + "(event flutflutegg-physics)": [ + [16, "vector"] + ], + + "(code flutflutegg-physics-fall)": [ + [16, "vector"], + [32, "quaternion"] + ], + + "(code flutflutegg-physics)": [ + [16, "vector"], + [32, "quaternion"] + ], + + "(code flying-rock-rolling)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "move-grottopole": [ + [16, "vector"], + [32, "vector"] + ], + + "(code ecoventrock-break)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "beachcam-spawn": [ + [16, "event-message-block"] + ], + + "(anon-function 8 beach-obs)": [ + [16, "event-message-block"] + ], + + "(code target-warp-in)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(trans active warp-gate)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code idle warp-gate)": [ + [16, "vector"], + [32, "font-context"] + ], + + "(code active warp-gate)": [ + [16, "font-context"] + ], + + "(event basebutton-up-idle warp-gate-switch)": [ + [16, "event-message-block"] + ], + + "(method 31 warp-gate-switch)": [ + [16, "event-message-block"] + ], + + "(trans basebutton-up-idle warp-gate-switch)": [ + [16, "event-message-block"] + ], + + "(event basebutton-down-idle warp-gate-switch)": [ + [16, "event-message-block"] + ], + + "(code basebutton-going-down warp-gate-switch)": [ + [16, "event-message-block"] + ], + + "(code idle citb-arm-section)": [ + [16, "vector"], + [32, "vector"] + ], + + "(event citb-disc-idle)": [ + [16, "event-message-block"] + ], + + "(post plat-path-active citb-launcher)": [ + [16, "event-message-block"] + ], + + "(event citb-robotboss-idle)": [ + [16, "event-message-block"] + ], + + "(code citb-robotboss-idle)": [ + [16, "event-message-block"] + ], + + "citb-generator-trigger-others": [ + [16, "event-message-block"] + ], + + "(code citb-generator-break)": [ + [16, "event-message-block"] + ], + + "(code citadelcam-stair-plats)": [ + [16, "event-message-block"] + ], + + "(code battlecontroller-play-intro-camera citb-battlecontroller)": [ + [16, "event-message-block"] + ], + + "(trans cavecrystal-active)": [ + [16, "vector"] + ], + + "(method 11 eggtop)": [ + [16, "vector"] + ], + + "(anon-function 4 jungleb-obs)": [ + [16, "event-message-block"] + ], + + "(event idle logtrap)": [ + [16, "event-message-block"] + ], + + "(code pov-camera-playing precurbridgecam)": [ + [16, "event-message-block"] + ], + + "(code precurbridge-idle)": [ + [16, "event-message-block"] + ], + + "(code maindoor-closed)": [ + [16, "event-message-block"] + ], + + "(method 11 maindoor)": [ + [16, "event-message-block"] + ], + + "(code lurkerm-piston-idle)": [ + [16, "vector"] + ], + + "starfish-spawn-child": [ + [16, "vector"] + ], + + "(method 27 bone-platform)": [ + [16, "vector"] + ], + + "(event breakaway-idle)": [ + [16, "event-message-block"] + ], + + "mistycam-spawn": [ + [16, "event-message-block"] + ], + + "mis-bone-bridge-event-handler": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "misty-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "(trans allpontoons-be-clone)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + + "fireboulder-hover-stuff": [ + [16, "vector"] + ], + + "(enter fireboulder-hover)": [ + [16, "vector"] + ], + + "boulder1-trans": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder2-trans-2": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder2-trans": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder3-trans-2": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder3-trans": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder4-trans-3": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder4-trans-2": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "boulder4-trans": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code exit-chamber-dummy-idle)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code exit-chamber-dummy-wait-to-appear)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code ogreboss-village2-throw)": [ + [16, "event-message-block"] + ], + + "swamp-spike-default-event-handler": [ + [16, "event-message-block"] + ], + + "swamp-spike-post": [ + [16, "event-message-block"] + ], + + "(code balance-plat-idle)": [ + [16, "event-message-block"] + ], + + "(code swamp-spike-idle)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code pov-camera-playing maincavecam)": [ + [16, "event-message-block"] + ], + + "(event idle cavetrapdoor)": [ + [16, "event-message-block"] + ], + + "cavecrystal-light-control-caveelevator-callback": [ + [16, "vector"] + ], + + "(method 21 caveelevator)": [ + [16, "vector"] + ], + + "(method 20 caveelevator)": [ + [16, "vector"] + ], + + "caveelevator-joint-callback": [ + [16, "vector"] + ], + + "(event caveflamepots-active)": [ + [16, "attack-info"], + [128, "event-message-block"] + ], + + "(code pov-camera-playing sunkencam)": [ + [16, "event-message-block"] + ], + + "dark-plant-check-target": [ + [16, "event-message-block"] + ], + + "(code dark-plant-idle)": [ + [16, "event-message-block"] + ], + + "(code gorge-abort-idle)": [ + [16, "event-message-block"] + ], + + "(code gorge-finish-idle)": [ + [16, "event-message-block"] + ], + + "(code gorge-start-race-finished)": [ + [16, "event-message-block"] + ], + + "(code gorge-start-race-aborted)": [ + [16, "event-message-block"] + ], + + "(enter gorge-start-racing)": [ + [16, "event-message-block"] + ], + + "(exit gorge-start-racing)": [ + [16, "event-message-block"] + ], + + "(code gorge-start-ready)": [ + [16, "event-message-block"] + ], + + "(code happy-plant-opening)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code pusher-idle)": [ + [16, "vector"] + ], + + "(method 11 gorge-start)": [ + [16, "vector"] + ], + + "(method 11 happy-plant)": [ + [16, "vector"] + ], + + "rolling-start-init-by-other": [ + [16, "matrix"] + ], + + "dark-plant-randomize": [ + [16, "vector"] + ], + + "gorge-init": [ + [16, "vector"] + ], + + "gorge-start-launch-start-banner": [ + [16, "vector"] + ], + + "gorge-behind": [ + [16, "vector"] + ], + + "gorge-in-front": [ + [16, "vector"] + ], + + "race-time-read": [ + [16, "race-time"] + ], + + "gorge-start-draw-time": [ + [16, "font-context"] + ], + + "(event balloon-idle)": [ + [16, "event-message-block"] + ], + + "(trans spike-up)": [ + [16, "event-message-block"] + ], + + "(trans spike-down)": [ + [16, "event-message-block"] + ], + + "(trans spike-idle)": [ + [16, "event-message-block"] + ], + + "(event idle crate-darkeco-cluster)": [ + [16, "event-message-block"] + ], + + "(event idle tntbarrel)": [ + [16, "event-message-block"] + ], + + "(trans ogre-bridge-idle)": [ + [16, "event-message-block"] + ], + + "(code ogre-bridge-activate)": [ + [16, "event-message-block"] + ], + + "(event ogre-bridge-break)": [ + [16, "vector"] + ], + + "(code ride-up gondola)": [ + [16, "event-message-block"] + ], + + "(code ride-down gondola)": [ + [16, "event-message-block"] + ], + + "(code idle gondola)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"], + [128, "font-context"] + ], + + "(code pov-camera-playing snowcam)": [ + [16, "event-message-block"] + ], + + "(code snow-eggtop-activate)": [ + [16, "event-message-block"] + ], + + "(event snowpusher-idle)": [ + [16, "event-message-block"] + ], + + "(code snow-log-wait-for-master)": [ + [16, "event-message-block"] + ], + + "(code snow-log-button-activate)": [ + [16, "event-message-block"] + ], + + "(method 11 snow-eggtop)": [ + [16, "vector"] + ], + + "(method 20 snow-gears)": [ + [16, "vector"] + ], + + "(code snow-switch-activate)": [ + [16, "vector"] + ], + + "(method 11 snow-switch)": [ + [16, "vector"] + ], + + "(code snow-fort-gate-activate)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(code snow-spatula-idle)": [ + [16, "matrix"] + ], + + "(enter snow-button-activate)": [ + [16, "event-message-block"] + ], + + "(code plat-startup flutflut-plat)": [ + [16, "event-message-block"] + ], + + "(enter flutflut-plat-appear)": [ + [16, "vector"], + [32, "quaternion"] + ], + + "(enter flutflut-plat-hide)": [ + [16, "vector"], + [32, "quaternion"] + ], + + "darkecobarrel-mover-pos": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"], + [112, "matrix"], + [176, "vector"] + ], + + "(code darkecobarrel-mover-die)": [ + [16, "vector"] + ], + + "(code die chainmine)": [ + [16, "vector"] + ], + + "(event idle chainmine)": [ + [16, "event-message-block"] + ], + + "(event idle lavaballoon)": [ + [16, "event-message-block"] + ], + + "(event darkecobarrel-mover-move)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code startup logo)": [ + [16, "event-message-block"] + ], + + "(code ndi logo)": [ + [16, "event-message-block"] + ], + + "(enter target-title)": [ + [16, "event-message-block"] + ], + + "(trans target-title-wait)": [ + [16, "font-context"] + ], + + "(code target-title)": [ + [16, "mc-slot-info"] + ], + + "(post startup logo)": [ + [16, "vector"], + [32, "vector"] + ], + "sp-relaunch-particle-3d": [ [16, "quaternion"], [32, "vector"], @@ -2851,5 +3426,21 @@ [16, "vector"] ], + "(event idle scarecrow-a)": [ + [16, "vector"] + ], + + "(method 11 touching-prims-entry)": [ + [16, "vector"] + ], + + "(code hit scarecrow-a)": [ + [16, "joint-exploder-tuning"] + ], + + "(code hit scarecrow-b)": [ + [16, "joint-exploder-tuning"] + ], + "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 124c34c02a..68a0c3f190 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -4286,5 +4286,584 @@ [1, "a1", "entity-actor"] ], + "(code windmill-one-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code harvester-inflate)": [ + [11, "v1", "art-joint-anim"], + [61, "v1", "art-joint-anim"] + ], + + "(code flutflutegg-break)": [ + [38, "v1", "art-joint-anim"], + [91, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"] + ], + + "(method 7 flutflutegg)": [ + [14, "t9", "(function process-drawable int process-drawable)"] + ], + + "(event flutflutegg-idle)": [ + [30, "gp", "process-drawable"] + ], + + "(event flutflutegg-physics)": [ + [37, "gp", "process-drawable"] + ], + + "(trans flutflutegg-idle)": [ + [17, "v1", "float"] + ], + + "beachcam-spawn": [ + [68, "gp", "handle"], + [77, "a0", "pov-camera"], + [88, "v1", "handle"], + [106, "s5", "handle"] + ], + + "(code ecoventrock-break)": [ + [338, "gp", "handle"] + ], + + "(code target-warp-in)": [ + [192, "v1", "art-joint-anim"] + ], + + "(method 26 warp-gate-switch)": [ + [60, "v1", "art-joint-anim"] + ], + + "(method 31 warp-gate-switch)": [ + [61, "t9", "(function basebutton symbol none)"] + ], + + "(code basebutton-going-down warp-gate-switch)": [ + [79, "v0", "(state basebutton)"], + [81, "t9", "(function none :behavior basebutton)"] + ], + + "(method 11 village-cam)": [ + [21, "s5", "entity-actor"] + ], + + "(code idle warp-gate)": [ + [35, "a0", "symbol"] + ], + + "(method 21 citb-arm)": [ + [7, "t9", "(function citb-arm-section none)"] + ], + + "(method 21 citb-arm-shoulder)": [ + [7, "t9", "(function citb-arm-section none)"] + ], + + "(method 21 citb-arm-a)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 21 citb-arm-b)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 21 citb-arm-c)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 21 citb-arm-d)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 21 citb-arm-shoulder-a)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 21 citb-arm-shoulder-b)": [ + [14, "t9", "(function citb-arm none)"] + ], + + "(method 26 citb-button)": [ + [31, "v1", "art-joint-anim"] + ], + + "(code citb-coil-break)": [ + [19, "v1", "art-joint-anim"] + ], + + "(code citb-coil-broken)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code citb-hose-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code citb-hose-spawn)": [ + [14, "v1", "art-joint-anim"] + ], + + "(code citb-hose-die)": [ + [19, "v1", "art-joint-anim"] + ], + + "(code citadelcam-stair-plats)": [ + [79, "gp", "handle"] + ], + + "(code battlecontroller-play-intro-camera citb-battlecontroller)": [ + [55, "gp", "handle"], + [76, "gp", "handle"] + ], + + "(post plat-path-active citb-launcher)": [ + [4, "t9", "(function none :behavior citb-launcher)"] + ], + + "(code battlecontroller-die citb-battlecontroller)": [ + [9, "v0", "(state battlecontroller)"], + [11, "t9", "(function none :behavior battlecontroller)"] + ], + + "(method 27 citb-battlecontroller)": [ + [7, "t9", "(function battlecontroller none)"] + ], + + "(code eggtop-close)": [ + [108, "v1", "art-joint-anim"], + [176, "v1", "art-joint-anim"] + ], + + "(code idle logtrap)": [ + [12, "v1", "art-joint-anim"] + ], + + "(code towertop-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code lurkerm-tall-sail-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code lurkerm-short-sail-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code lurkerm-piston-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code precurbridge-activate)": [ + [31, "v1", "art-joint-anim"] + ], + + "(event precurbridge-active)": [ + [4, "gp", "touching-shapes-entry"] + ], + + "(method 7 jngpusher)": [ + [14, "t9", "(function process-drawable int process-drawable)"] + ], + + "(method 11 lurkerm-piston)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"], + [148, "v0", "(pointer float)"] + ], + + "(code starfish-patrol)": [ + [16, "v1", "art-joint-anim"] + ], + + "(method 7 hutlamp)": [ + [14, "t9", "(function process-drawable int process-drawable)"] + ], + + "(code mis-bone-bridge-bump)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code mis-bone-bridge-hit)": [ + [21, "v1", "art-joint-anim"] + ], + + "(code mis-bone-bridge-fall)": [ + [50, "v1", "art-joint-anim"] + ], + + "(method 23 bone-platform)": [ + [9, "t9", "(function rigid-body-platform basic none)"] + ], + + "mistycam-spawn": [ + [69, "v1", "handle"], + [72, "v1", "handle"], + [85, "v1", "handle"], + [88, "v1", "handle"], + [103, "s5", "handle"], + [106, "s5", "handle"] + ], + + "(code battlecontroller-play-intro-camera misty-battlecontroller)": [ + [34, "gp", "handle"] + ], + + "(method 27 misty-battlecontroller)": [ + [7, "t9", "(function battlecontroller none)"] + ], + + "(code boat-fuelcell-spawn)": [ + [50, "gp", "handle"] + ], + + "(code pov-camera-playing village2cam)": [ + [12, "v1", "art-joint-anim"], + [65, "v1", "art-joint-anim"] + ], + + "(method 23 pontoon)": [ + [9, "t9", "(function rigid-body-platform basic none)"] + ], + + "fireboulder-disable-blocking-collision": [ + [5, "v1", "collide-shape-prim-group"], + [14, "v1", "collide-shape-prim-group"] + ], + + "fireboulder-hover-stuff": [ + [20, "v1", "(pointer part-tracker)"] + ], + + "(code ogreboss-village2-throw)": [ + [179, "v1", "art-joint-anim"], + [227, "v1", "float"], + [434, "v1", "art-joint-anim"] + ], + + "(code ogreboss-village2-idle)": [ + [136, "v1", "art-joint-anim"], + [194, "v1", "art-joint-anim"], + [247, "v1", "art-joint-anim"], + [299, "v1", "float"], + [319, "v1", "art-joint-anim"] + ], + + "(code fireboulder-idle)": [ + [58, "a0", "(pointer part-tracker)"] + ], + + "(code swamp-spike-idle)": [ + [119, "v1", "art-joint-anim"], + [203, "v1", "art-joint-anim"], + [312, "v1", "art-joint-anim"] + ], + + "(code swamp-spike-gate-up)": [ + [60, "v1", "art-joint-anim"] + ], + + "(method 23 tar-plat)": [ + [9, "t9", "(function rigid-body-platform basic none)"] + ], + + "(code battlecontroller-play-intro-camera swamp-battlecontroller)": [ + [38, "gp", "handle"] + ], + + "(code battlecontroller-die swamp-battlecontroller)": [ + [8, "t9", "(function none :behavior battlecontroller)"] + ], + + "swamp-spike-set-particle-rotation-callback": [ + [3, "v1", "(pointer swamp-spike)"] + ], + + "(code pov-camera-playing maincavecam)": [ + [47, "gp", "handle"], + [50, "gp", "handle"] + ], + + "(code cavecrusher-idle)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code idle cavetrapdoor)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code caveelevator-one-way-idle-end)": [ + [19, "v1", "art-joint-anim"] + ], + + "(code trigger cavetrapdoor)": [ + [23, "v1", "art-joint-anim"], + [157, "v1", "art-joint-anim"], + [247, "v1", "art-joint-anim"] + ], + + "(method 11 caveflamepots)": [ + [290, "s4", "collide-shape-prim-group"] + ], + + "(code pov-camera-playing sunkencam)": [ + [12, "v1", "art-joint-anim"], + [62, "v1", "art-joint-anim"], + [120, "v1", "art-joint-anim"], + [174, "v1", "art-joint-anim"], + [236, "v1", "art-joint-anim"], + [294, "v1", "art-joint-anim"], + [348, "v1", "art-joint-anim"], + [452, "v1", "art-joint-anim"], + [502, "v1", "art-joint-anim"] + ], + + "(code seaweed-idle)": [ + [36, "v1", "art-joint-anim"] + ], + + "(code dark-plant-death)": [ + [36, "v1", "art-joint-anim"] + ], + + "(code dark-plant-sprout)": [ + [34, "v1", "art-joint-anim"] + ], + + "(code happy-plant-opened)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code rolling-start-whole)": [ + [16, "v1", "art-joint-anim"] + ], + + "(code rolling-start-break)": [ + [11, "v1", "art-joint-anim"], + [67, "v1", "art-joint-anim"], + [117, "v1", "art-joint-anim"] + ], + + "(code dark-plant-startup)": [ + [10, "v1", "art-joint-anim"], + [26, "v1", "float"] + ], + + "(code dark-plant-idle)": [ + [85, "v1", "art-joint-anim"], + [101, "v1", "float"], + [139, "v1", "float"] + ], + + "(code dark-plant-gone)": [ + [14, "v1", "float"] + ], + + "dark-plants-all-done": [ + [6, "a0", "dark-plant"], + [12, "a0", "dark-plant"] + ], + + "(code happy-plant-opening)": [ + [76, "gp", "handle"], + [84, "gp", "handle"], + [145, "gp", "handle"], + [168, "v1", "handle"], + [171, "v1", "handle"], + [179, "gp", "handle"], + [185, "s5", "handle"], + [188, "s5", "handle"] + ], + + "(trans spike-idle)": [ + [70, "v1", "float"] + ], + + "(method 23 ogre-plat)": [ + [9, "t9", "(function rigid-body-platform basic none)"] + ], + + "(method 31 ogre-step)": [ + [23, "t9", "(function ogre-plat none)"] + ], + + "(method 31 ogre-step-a)": [ + [25, "t9", "(function ogre-step none)"] + ], + + "(method 31 ogre-step-b)": [ + [25, "t9", "(function ogre-step none)"] + ], + + "(method 31 ogre-step-c)": [ + [25, "t9", "(function ogre-step none)"] + ], + + "(method 31 ogre-step-d)": [ + [25, "t9", "(function ogre-step none)"] + ], + + "(method 31 ogre-isle)": [ + [17, "t9", "(function ogre-plat none)"] + ], + + "(method 31 ogre-isle-b)": [ + [31, "t9", "(function ogre-isle none)"] + ], + + "(method 31 ogre-isle-c)": [ + [31, "t9", "(function ogre-isle none)"] + ], + + "(method 31 ogre-isle-d)": [ + [37, "t9", "(function ogre-isle none)"] + ], + + "(method 7 ogre-bridge)": [ + [26, "t9", "(function process-drawable int process-drawable)"] + ], + + "(code ogre-bridge-activate)": [ + [33, "v1", "art-joint-anim"] + ], + + "(code water-vol-idle ogre-lava)": [ + [36, "v1", "art-joint-anim"] + ], + + "(code ogre-bridge-break)": [ + [10, "v1", "art-joint-anim"] + ], + + "(code ogre-bridge-activated)": [ + [13, "v1", "art-joint-anim"] + ], + + "(code snow-eggtop-activate)": [ + [87, "v1", "art-joint-anim"] + ], + + "(code snow-eggtop-idle-down)": [ + [32, "v1", "art-joint-anim"] + ], + + "(code snow-log-active)": [ + [30, "v1", "art-joint-anim"] + ], + + "(code snow-log-activate)": [ + [25, "v1", "art-joint-anim"] + ], + + "(code snow-gears-activate)": [ + [25, "v1", "art-joint-anim"], + [75, "v1", "art-joint-anim"] + ], + + "(code snow-gears-halt)": [ + [10, "v1", "art-joint-anim"], + [85, "v1", "art-joint-anim"] + ], + + "(code pov-camera-playing snowcam)": [ + [12, "v1", "art-joint-anim"], + [62, "v1", "art-joint-anim"], + [112, "v1", "art-joint-anim"], + [242, "gp", "handle"], + [245, "gp", "handle"], + [274, "v1", "art-joint-anim"], + [346, "v1", "art-joint-anim"] + ], + + "(method 7 snow-fort-gate)": [ + [19, "t9", "(function process-drawable int process-drawable)"] + ], + + "(code snow-button-activate)": [ + [25, "v1", "art-joint-anim"] + ], + + "(code snow-button-deactivate)": [ + [26, "v1", "art-joint-anim"] + ], + + "(code plat-startup flutflut-plat)": [ + [62, "t9", "(function none :behavior plat)"] + ], + + "(method 7 darkecobarrel)": [ + [14, "t9", "(function darkecobarrel-base int darkecobarrel-base)"] + ], + + "(event darkecobarrel-mover-move)": [ + [76, "v1", "process-drawable"] + ], + + "(code darkecobarrel-mover-move)": [ + [10, "v1", "float"], + [29, "v1", "float"] + ], + + "(post water-vol-idle lavatube-lava)": [ + [4, "t9", "(function none :behavior lavatube-lava)"] + ], + + "darkecobarrel-mover-pos": [ + [135, "v1", "uint"] + ], + + "(code startup logo)": [ + [352, "v1", "art-joint-anim"] + ], + + "(code idle logo)": [ + [78, "v1", "art-joint-anim"] + ], + + "(code target-title)": [ + [20, "a0", "handle"], + [214, "s5", "handle"] + ], + + "(event idle logo-slave)": [ + [14, "v1", "uint"] + ], + + "(method 11 training-cam)": [ + [21, "s5", "entity-actor"] + ], + + "(method 23 tra-pontoon)": [ + [9, "t9", "(function rigid-body-platform float none)"] + ], + + "(event idle scarecrow-a)": [ + [75, "v1", "process-drawable"], + [135, "gp", "target"], + [142, "gp", "target"] + ], + + "(code idle scarecrow-a)": [ + [14, "v1", "art-joint-anim"] + ], + + "(code idle scarecrow-b)": [ + [14, "v1", "art-joint-anim"] + ], + + "(code hit scarecrow-a)": [ + [30, "v1", "art-joint-anim"], + [92, "v1", "art-joint-anim"], + [143, "v1", "art-joint-anim"] + ], + + "(code hit scarecrow-b)": [ + [30, "v1", "art-joint-anim"], + [92, "v1", "art-joint-anim"], + [143, "v1", "art-joint-anim"] + ], + "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 41185484db..44e68f345a 100644 --- a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc @@ -3673,5 +3673,24 @@ } }, + "(event citb-robotboss-idle)": { + "vars": { + "v0-3": ["v0-3", "symbol"] + } + }, + + "(code pov-camera-playing maincavecam)": { + "vars": { + "gp-1": ["gp-1", "handle"] + } + }, + + // this shouldn't be required + "(event darkecobarrel-mover-move)": { + "vars": { + "v0-0": ["v0-0", "object"] + } + }, + "aaaaaaaaaaaaaaaaaaaaaaa": {} } diff --git a/goal_src/build/all_files.gc b/goal_src/build/all_files.gc index 078a166e84..e9a9a4b8cb 100644 --- a/goal_src/build/all_files.gc +++ b/goal_src/build/all_files.gc @@ -349,7 +349,6 @@ "goal_src/levels/citadel/citb-drop-plat-CIT.gc" "goal_src/levels/l1_only/citb-drop-plat-L1.gc" "goal_src/levels/citadel/assistant-citadel.gc" - "goal_src/levels/darkcave/darkcave-obs.gc" "goal_src/levels/demo/demo-obs.gc" "goal_src/levels/common/static-screen.gc" "goal_src/levels/finalboss/robotboss-h.gc" @@ -449,6 +448,7 @@ "goal_src/levels/maincave/mother-spider.gc" "goal_src/levels/maincave/gnawer.gc" "goal_src/levels/maincave/driller-lurker.gc" + "goal_src/levels/darkcave/darkcave-obs.gc" "goal_src/levels/sunken/sunken-part.gc" "goal_src/levels/sunken/sunken-part2.gc" "goal_src/levels/sunken/sunken-part3.gc" @@ -511,4 +511,4 @@ "goal_src/levels/title/title-obs.gc" "goal_src/old/lava/lava.gc" ) - ) \ No newline at end of file + ) diff --git a/goal_src/engine/ambient/ambient.gc b/goal_src/engine/ambient/ambient.gc index e66f35daa5..7f2f393caf 100644 --- a/goal_src/engine/ambient/ambient.gc +++ b/goal_src/engine/ambient/ambient.gc @@ -662,8 +662,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -753,8 +753,8 @@ 1024 1 0 - (the-as uint 1) - (-> self trans) + 1 + (the-as symbol (-> self trans)) ) ) ) @@ -772,8 +772,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/engine/ambient/mood.gc b/goal_src/engine/ambient/mood.gc index 32bcfc4111..5b5bd0c2af 100644 --- a/goal_src/engine/ambient/mood.gc +++ b/goal_src/engine/ambient/mood.gc @@ -1129,8 +1129,8 @@ (the int (* 10.24 (rand-vu-float-range 25.0 75.0))) (the int (* 1524.0 (rand-vu-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "thunder") @@ -1138,8 +1138,8 @@ (the int (* 10.24 (rand-vu-float-range 200.0 400.0))) (the int (* 1524.0 (rand-vu-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/engine/camera/cam-master.gc b/goal_src/engine/camera/cam-master.gc index de7252757c..50c099bcaa 100644 --- a/goal_src/engine/camera/cam-master.gc +++ b/goal_src/engine/camera/cam-master.gc @@ -8,10 +8,6 @@ ;; TODO - for basebutton (define-extern cam-fixed (state camera-slave)) -(define-extern cam-free-floating (state camera-slave)) -(define-extern cam-master-active (state camera-master)) -(define-extern list-keeper-active (state camera-master)) - ;; DECOMP BEGINS (deftype camera-master-bank (basic) diff --git a/goal_src/engine/camera/camera.gc b/goal_src/engine/camera/camera.gc index 153ed359f0..75cf8a93cd 100644 --- a/goal_src/engine/camera/camera.gc +++ b/goal_src/engine/camera/camera.gc @@ -5,6 +5,9 @@ ;; name in dgo: camera ;; dgos: GAME, ENGINE +(define-extern cam-free-floating (state camera-slave)) +(define-extern cam-master-active (state camera-master)) + ;; DECOMP BEGINS (define *cam-res-string* (new 'global 'string 64 (the-as string #f))) diff --git a/goal_src/engine/camera/pov-camera-h.gc b/goal_src/engine/camera/pov-camera-h.gc index d0ee76beaa..5e4a2dfe0d 100644 --- a/goal_src/engine/camera/pov-camera-h.gc +++ b/goal_src/engine/camera/pov-camera-h.gc @@ -5,16 +5,18 @@ ;; name in dgo: pov-camera-h ;; dgos: GAME, ENGINE +;; DECOMP BEGINS + (deftype pov-camera (process-drawable) - ((cspace-array cspace-array :offset 112) - (flags int32 :offset-assert 176) - (debounce-start-time uint64 :offset-assert 184) - (notify-handle handle :offset-assert 192) - (anim-name string :offset-assert 200) - (command-list pair :offset-assert 204) ;; not a basic atleast! - (mask-to-clear uint32 :offset-assert 208) - (music-volume-movie float :offset-assert 212) - (sfx-volume-movie float :offset-assert 216) + ((cspace-array cspace-array :offset 112) + (flags int32 :offset-assert 176) + (debounce-start-time uint64 :offset-assert 184) + (notify-handle handle :offset-assert 192) + (anim-name string :offset-assert 200) + (command-list pair :offset-assert 204) + (mask-to-clear uint32 :offset-assert 208) + (music-volume-movie float :offset-assert 212) + (sfx-volume-movie float :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 @@ -23,13 +25,20 @@ (:methods (pov-camera-abort () _type_ :state 20) (pov-camera-done-playing () _type_ :state 21) - (pov-camera-playing () _type_ :state 22) ;; state - (pov-camera-start-playing () _type_ :state 23) ;; state - (pov-camera-startup () _type_ :state 24) ;; state + (pov-camera-playing () _type_ :state 22) + (pov-camera-start-playing () _type_ :state 23) + (pov-camera-startup () _type_ :state 24) (TODO-RENAME-25 (_type_) symbol 25) (target-grabbed? (_type_) symbol 26) (dummy-27 () none 27) (target-released? () symbol 28) - (dummy-29 () none 29) + (set-stack-size! (_type_) none 29) ) ) + + +0 + + + + diff --git a/goal_src/engine/camera/pov-camera.gc b/goal_src/engine/camera/pov-camera.gc index 600a078e8a..716a7f2985 100644 --- a/goal_src/engine/camera/pov-camera.gc +++ b/goal_src/engine/camera/pov-camera.gc @@ -314,7 +314,7 @@ (none) ) -(defmethod dummy-29 pov-camera () +(defmethod set-stack-size! pov-camera ((obj pov-camera)) (none) ) @@ -327,7 +327,7 @@ (arg4 process-drawable) (arg5 pair) ) - ((method-of-object self dummy-29)) + (set-stack-size! self) (set! (-> *game-info* pov-camera-handle) (process->handle self)) (set! (-> self flags) arg3) (set! (-> self command-list) arg5) diff --git a/goal_src/engine/collide/collide-touch-h.gc b/goal_src/engine/collide/collide-touch-h.gc index 6c6d54298a..8f099cb919 100644 --- a/goal_src/engine/collide/collide-touch-h.gc +++ b/goal_src/engine/collide/collide-touch-h.gc @@ -5,6 +5,10 @@ ;; name in dgo: collide-touch-h ;; dgos: GAME, ENGINE +(declare-type touching-shapes-entry structure) + +;; decomp begins + (deftype touching-prim (structure) ((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name (has-tri? symbol :offset-assert 4) @@ -27,9 +31,9 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (dummy-9 () none 9) + (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) (dummy-10 () none 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) vector 11) (dummy-12 () none 12) ) ) @@ -99,7 +103,7 @@ :flag-assert #x1200000010 (:methods (dummy-9 () none 9) - (dummy-10 () none 10) + (touched-shape (_type_ collide-shape-moving) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! (dummy-13 () none 13) diff --git a/goal_src/engine/entity/entity.gc b/goal_src/engine/entity/entity.gc index 1ca181ce12..207b65ec5a 100644 --- a/goal_src/engine/entity/entity.gc +++ b/goal_src/engine/entity/entity.gc @@ -5,6 +5,9 @@ ;; name in dgo: entity ;; dgos: GAME, ENGINE +;; TODO - for jungleb-obs +(define-extern entity-task-complete-on (function entity none)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; global entity settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/engine/game/crates.gc b/goal_src/engine/game/crates.gc index 4d5bc74b9c..e8e6f1d949 100644 --- a/goal_src/engine/game/crates.gc +++ b/goal_src/engine/game/crates.gc @@ -5,3 +5,41 @@ ;; name in dgo: crates ;; dgos: GAME, ENGINE +;; TODO - for swamp-obs +(deftype crate (process-drawable) + ((root-override collide-shape-moving :score 20 :offset 112) + (smush smush-control :inline :offset-assert 176) + (base vector :inline :offset-assert 208) + (look symbol :offset-assert 224) + (defense symbol :offset-assert 228) + (incomming-attack-id uint64 :offset-assert 232) + (target handle :offset-assert 240) + (child-count int32 :offset-assert 248) + (victory-anim spool-anim :offset-assert 252) + ) + :method-count-assert 30 + :size-assert #x100 + :heap-base #x90 + :flag-assert #x1e00900100 + ;; inherited inspect of process-drawable + (:methods + (wait () _type_ :state 20) ;; state + (die (symbol int) _type_ :state 21) + (special-contents-die () _type_ :state 22) + (bounce-on () _type_ :state 23) ;; state + (notice-blue (handle) _type_ :state 24) + (params-init (_type_ entity) none 25) + (art-init (_type_) none 26) + (params-set! (_type_ symbol symbol) none 27) + (dummy-28 (_type_) none 28) + (smush-update! (_type_) none 29) + ) + ) + +(deftype barrel (crate) + () + :method-count-assert 30 + :heap-base #x90 + :size-assert #x100 + :flag-assert #x1e00900100 + ) diff --git a/goal_src/engine/game/effect-control.gc b/goal_src/engine/game/effect-control.gc index ffbe5d0e82..200866689a 100644 --- a/goal_src/engine/game/effect-control.gc +++ b/goal_src/engine/game/effect-control.gc @@ -1375,8 +1375,8 @@ ) 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ((logtest? (-> self water flags) 512) diff --git a/goal_src/engine/game/game-info.gc b/goal_src/engine/game/game-info.gc index f1924530cf..4ef5c776b3 100644 --- a/goal_src/engine/game/game-info.gc +++ b/goal_src/engine/game/game-info.gc @@ -573,8 +573,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) @@ -667,8 +667,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! (-> obj money-pickup-time) (-> *display* base-frame-counter)) @@ -775,16 +775,16 @@ (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 17 60) (case kind (((pickup-type eco-blue)) - (sound-play-by-name (static-sound-name "get-blue-eco") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "get-blue-eco") (new-sound-id) 1024 0 0 1 #t) ) (((pickup-type eco-green)) - (sound-play-by-name (static-sound-name "get-green-eco") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "get-green-eco") (new-sound-id) 1024 0 0 1 #t) ) (((pickup-type eco-yellow)) - (sound-play-by-name (static-sound-name "get-yellow-eco") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "get-yellow-eco") (new-sound-id) 1024 0 0 1 #t) ) (((pickup-type eco-red)) - (sound-play-by-name (static-sound-name "get-red-eco") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "get-red-eco") (new-sound-id) 1024 0 0 1 #t) ) ) ) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index 9dfb538be4..4bb1f2a282 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -5,6 +5,30 @@ ;; name in dgo: generic-obs ;; dgos: GAME, ENGINE +;; TODO - temporary, for citadel-obs +(deftype launcher (process-drawable) + ((spring-height meters :offset-assert 176) + (camera basic :offset-assert 180) + (active-distance float :offset-assert 184) + (seek-time int64 :offset-assert 192) + (dest vector :inline :offset-assert 208) + (sound-id sound-id :offset-assert 224) + ) + :method-count-assert 20 + :size-assert #xe4 + :heap-base #x80 + :flag-assert #x14008000e4 + ) +(define-extern launcher-init-by-other (function vector float vector float none :behavior launcher)) + +;; TODO - for village-obs +(define-extern draw-eco-beam (function vector vector none)) ;; TODO - not confirmed + +;; TODO - for jungleb-obs +(define-extern camera-look-at (function process int none)) ;; TODO - process is likely a target + +;; decomp begins + ;; definition for function clone-anim-once ;; INFO: Return type mismatch int vs none. diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index cadf7be961..c6ddb1c7cb 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -331,8 +331,8 @@ "play the appropriate sound for inputting a cheat code" `(if ,cheat? - (sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) - (sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t) + (sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t) ) ) @@ -410,11 +410,11 @@ (external-cam-reset!) ) (set! *external-cam-mode* 'pad-1) - (sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t) ) (else (set! *external-cam-mode* #f) - (sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t) ) ) ) diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index ded08884a4..b1d414466c 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -1120,8 +1120,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) @@ -1165,8 +1165,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) @@ -1341,8 +1341,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj sound-id) @@ -1352,8 +1352,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (when (zero? (logand (-> obj options) 416)) @@ -1630,8 +1630,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj mode) 2) (set! (-> obj max-speed) (-> *TARGET-bank* yellow-projectile-speed)) diff --git a/goal_src/engine/gfx/water/water-h.gc b/goal_src/engine/gfx/water/water-h.gc index 6b44920783..5a04c5dae3 100644 --- a/goal_src/engine/gfx/water/water-h.gc +++ b/goal_src/engine/gfx/water/water-h.gc @@ -5,6 +5,57 @@ ;; name in dgo: water-h ;; dgos: GAME, ENGINE +(define-extern *water-anim-sunken-dark-eco-qbert-sg* skeleton-group) +(define-extern *water-anim-sunken-dark-eco-platform-room-sg* skeleton-group) +(define-extern *water-anim-sunken-dark-eco-helix-room-sg* skeleton-group) +(define-extern *water-anim-sunken-big-room-sg* skeleton-group) +(define-extern *water-anim-sunken-first-room-from-entrance-sg* skeleton-group) +(define-extern *water-anim-sunken-qbert-room-sg* skeleton-group) +(define-extern *water-anim-sunken-first-right-branch-sg* skeleton-group) +(define-extern *water-anim-sunken-circular-with-bullys-sg* skeleton-group) +(define-extern *water-anim-sunken-hall-with-one-whirlpool-sg* skeleton-group) +(define-extern *water-anim-sunken-hall-with-three-whirlpools-sg* skeleton-group) +(define-extern *water-anim-sunken-start-of-helix-slide-sg* skeleton-group) +(define-extern *water-anim-sunken-room-above-exit-chamber-sg* skeleton-group) +(define-extern *water-anim-sunken-hall-before-big-room-sg* skeleton-group) +(define-extern *water-anim-sunken-short-piece-sg* skeleton-group) +(define-extern *water-anim-sunken-big-room-upper-water-sg* skeleton-group) +(define-extern *water-anim-maincave-center-pool-sg* skeleton-group) +(define-extern *water-anim-maincave-lower-right-pool-sg* skeleton-group) +(define-extern *water-anim-maincave-mid-right-pool-sg* skeleton-group) +(define-extern *water-anim-maincave-lower-left-pool-sg* skeleton-group) +(define-extern *water-anim-maincave-mid-left-pool-sg* skeleton-group) +(define-extern *water-anim-maincave-water-with-crystal-sg* skeleton-group) +(define-extern *water-anim-robocave-main-pool-sg* skeleton-group) +(define-extern *water-anim-misty-mud-by-arena-sg* skeleton-group) +(define-extern *water-anim-misty-mud-above-skeleton-sg* skeleton-group) +(define-extern *water-anim-misty-mud-behind-skeleton-sg* skeleton-group) +(define-extern *water-anim-misty-mud-above-skull-back-sg* skeleton-group) +(define-extern *water-anim-misty-mud-above-skull-front-sg* skeleton-group) +(define-extern *water-anim-misty-mud-other-near-skull-sg* skeleton-group) +(define-extern *water-anim-misty-mud-near-skull-sg* skeleton-group) +(define-extern *water-anim-misty-mud-under-spine-sg* skeleton-group) +(define-extern *water-anim-misty-mud-by-dock-sg* skeleton-group) +(define-extern *water-anim-misty-mud-island-near-dock-sg* skeleton-group) +(define-extern *water-anim-misty-mud-lonely-island-sg* skeleton-group) +(define-extern *water-anim-misty-dark-eco-pool-sg* skeleton-group) +(define-extern *water-anim-ogre-lava-sg* skeleton-group) +(define-extern *water-anim-jungle-river-sg* skeleton-group) +(define-extern *water-anim-village3-lava-sg* skeleton-group) +(define-extern *water-anim-training-lake-sg* skeleton-group) +(define-extern *water-anim-darkcave-water-with-crystal-sg* skeleton-group) +(define-extern *water-anim-rolling-water-back-sg* skeleton-group) +(define-extern *water-anim-rolling-water-front-sg* skeleton-group) +(define-extern *water-anim-finalboss-dark-eco-pool-sg* skeleton-group) +(define-extern *water-anim-lavatube-energy-lava-sg* skeleton-group) +(define-extern *water-anim-village1-rice-paddy-sg* skeleton-group) +(define-extern *water-anim-village1-fountain-sg* skeleton-group) +(define-extern *water-anim-village1-rice-paddy-mid-sg* skeleton-group) +(define-extern *water-anim-village1-rice-paddy-top-sg* skeleton-group) +(define-extern *water-anim-village2-bucket-sg* skeleton-group) + +;; DECOMP BEGINS + (deftype water-control (basic) ((flags uint32 :offset-assert 4) (process process :offset-assert 8) @@ -57,6 +108,7 @@ ) ) + (defmethod display-water-marks? water-control ((obj water-control)) (and *display-water-marks* (logtest? (-> obj flags) 1)) ) @@ -90,7 +142,6 @@ ) ) - (defmethod distance-from-surface water-control ((obj water-control)) (- (-> obj top 0 y) (-> obj height)) ) @@ -108,7 +159,6 @@ :method-count-assert 30 :size-assert #xd4 :flag-assert #x1e007000d4 - ;; inherited inspect of process-drawable (:methods (water-vol-idle () _type_ :state 20) (water-vol-startup () _type_ :state 21) @@ -123,52 +173,9 @@ ) ) -;; Manually Added -(define-extern *water-anim-sunken-dark-eco-qbert-sg* skeleton-group) -(define-extern *water-anim-sunken-dark-eco-platform-room-sg* skeleton-group) -(define-extern *water-anim-sunken-dark-eco-helix-room-sg* skeleton-group) -(define-extern *water-anim-sunken-big-room-sg* skeleton-group) -(define-extern *water-anim-sunken-first-room-from-entrance-sg* skeleton-group) -(define-extern *water-anim-sunken-qbert-room-sg* skeleton-group) -(define-extern *water-anim-sunken-first-right-branch-sg* skeleton-group) -(define-extern *water-anim-sunken-circular-with-bullys-sg* skeleton-group) -(define-extern *water-anim-sunken-hall-with-one-whirlpool-sg* skeleton-group) -(define-extern *water-anim-sunken-hall-with-three-whirlpools-sg* skeleton-group) -(define-extern *water-anim-sunken-start-of-helix-slide-sg* skeleton-group) -(define-extern *water-anim-sunken-room-above-exit-chamber-sg* skeleton-group) -(define-extern *water-anim-sunken-hall-before-big-room-sg* skeleton-group) -(define-extern *water-anim-sunken-short-piece-sg* skeleton-group) -(define-extern *water-anim-sunken-big-room-upper-water-sg* skeleton-group) -(define-extern *water-anim-maincave-center-pool-sg* skeleton-group) -(define-extern *water-anim-maincave-lower-right-pool-sg* skeleton-group) -(define-extern *water-anim-maincave-mid-right-pool-sg* skeleton-group) -(define-extern *water-anim-maincave-lower-left-pool-sg* skeleton-group) -(define-extern *water-anim-maincave-mid-left-pool-sg* skeleton-group) -(define-extern *water-anim-maincave-water-with-crystal-sg* skeleton-group) -(define-extern *water-anim-robocave-main-pool-sg* skeleton-group) -(define-extern *water-anim-misty-mud-by-arena-sg* skeleton-group) -(define-extern *water-anim-misty-mud-above-skeleton-sg* skeleton-group) -(define-extern *water-anim-misty-mud-behind-skeleton-sg* skeleton-group) -(define-extern *water-anim-misty-mud-above-skull-back-sg* skeleton-group) -(define-extern *water-anim-misty-mud-above-skull-front-sg* skeleton-group) -(define-extern *water-anim-misty-mud-other-near-skull-sg* skeleton-group) -(define-extern *water-anim-misty-mud-near-skull-sg* skeleton-group) -(define-extern *water-anim-misty-mud-under-spine-sg* skeleton-group) -(define-extern *water-anim-misty-mud-by-dock-sg* skeleton-group) -(define-extern *water-anim-misty-mud-island-near-dock-sg* skeleton-group) -(define-extern *water-anim-misty-mud-lonely-island-sg* skeleton-group) -(define-extern *water-anim-misty-dark-eco-pool-sg* skeleton-group) -(define-extern *water-anim-ogre-lava-sg* skeleton-group) -(define-extern *water-anim-jungle-river-sg* skeleton-group) -(define-extern *water-anim-village3-lava-sg* skeleton-group) -(define-extern *water-anim-training-lake-sg* skeleton-group) -(define-extern *water-anim-darkcave-water-with-crystal-sg* skeleton-group) -(define-extern *water-anim-rolling-water-back-sg* skeleton-group) -(define-extern *water-anim-rolling-water-front-sg* skeleton-group) -(define-extern *water-anim-finalboss-dark-eco-pool-sg* skeleton-group) -(define-extern *water-anim-lavatube-energy-lava-sg* skeleton-group) -(define-extern *water-anim-village1-rice-paddy-sg* skeleton-group) -(define-extern *water-anim-village1-fountain-sg* skeleton-group) -(define-extern *water-anim-village1-rice-paddy-mid-sg* skeleton-group) -(define-extern *water-anim-village1-rice-paddy-top-sg* skeleton-group) -(define-extern *water-anim-village2-bucket-sg* skeleton-group) + +0 + + + + diff --git a/goal_src/engine/sound/gsound.gc b/goal_src/engine/sound/gsound.gc index f32bf37737..f0a413abca 100644 --- a/goal_src/engine/sound/gsound.gc +++ b/goal_src/engine/sound/gsound.gc @@ -363,30 +363,50 @@ ) ) -(defun sound-play-by-name ((name sound-name) (id sound-id) (vol int) (pitch int) (bend int) (group uint) (trans vector)) +(defun + sound-play-by-name + ((name sound-name) + (id sound-id) + (vol int) + (pitch int) + (bend int) + (group int) + (trans symbol) + ) "Play a sound called name with the specified params" - - (#when PC_DEBUG_SOUND_ENABLE - (let ((sound-trans trans)) - (when *sound-player-enable* - (let ((cmd (the sound-rpc-play (get-sound-buffer-entry)))) - - (set! (-> cmd command) (sound-command play)) - (set! (-> cmd id) id) - (set! (-> cmd name) name) - (set! (-> cmd parms mask) (the-as uint 0)) - (set! (-> cmd parms group) group) - (set! (-> cmd parms volume) vol) - (set! (-> cmd parms pitch-mod) pitch) - (set! (-> cmd parms bend) bend) - - (format 0 "stfp~%") - (sound-trans-from-process cmd sound-trans) - ) + (local-vars (sv-16 int)) + (with-pp + (set! sv-16 group) + (let ((sound-trans (the-as structure trans))) + (when *sound-player-enable* + (let ((cmd (the-as sound-rpc-play (get-sound-buffer-entry)))) + (set! (-> cmd command) (sound-command play)) + (set! (-> cmd id) id) + (set! (-> cmd name) name) + (set! (-> cmd parms mask) (the-as uint 0)) + (set! (-> cmd parms group) (the-as uint sv-16)) + (set! (-> cmd parms volume) vol) + (set! (-> cmd parms pitch-mod) pitch) + (set! (-> cmd parms bend) bend) + (let ((proc (the-as process-drawable pp))) + (when (= (the-as symbol sound-trans) #t) + (if + (and + proc + (type-type? (-> proc type) process-drawable) + (nonzero? (-> proc root)) + ) + (set! sound-trans (-> proc root trans)) + (set! sound-trans #f) + ) ) + ) + (sound-trans-convert (-> cmd parms trans) (the-as vector sound-trans)) ) - ) - id + ) + ) + id + ) ) (defun sound-play-by-spec ((spec sound-spec) (id sound-id) (sound-trans vector)) @@ -695,8 +715,8 @@ (-> obj volume) (-> obj pitch) 0 - (the-as uint 1) - (-> obj trans))) + 1 + (the-as symbol (-> obj trans)))) ) (else (when (>= (-> *display* base-frame-counter) (-> obj play-time)) @@ -706,8 +726,8 @@ (-> obj volume) (-> obj pitch) 0 - (the-as uint 1) - (-> obj trans))) + 1 + (the-as symbol (-> obj trans)))) (set! (-> obj play-time) (+ (-> *display* base-frame-counter) (-> obj time-base) (rand-vu-int-count (-> obj time-random)) diff --git a/goal_src/engine/target/target-part.gc b/goal_src/engine/target/target-part.gc index 232cb4b645..453a07aab7 100644 --- a/goal_src/engine/target/target-part.gc +++ b/goal_src/engine/target/target-part.gc @@ -3096,8 +3096,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((s5-1 (new 'stack 'rgbaf)) (s3-0 (-> *display* base-frame-counter)) diff --git a/goal_src/engine/ui/hud-classes.gc b/goal_src/engine/ui/hud-classes.gc index cc5aefcb49..e1b70b2e9c 100644 --- a/goal_src/engine/ui/hud-classes.gc +++ b/goal_src/engine/ui/hud-classes.gc @@ -866,8 +866,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) 0 (none) diff --git a/goal_src/engine/ui/progress/progress.gc b/goal_src/engine/ui/progress/progress.gc index 4985ab0a4b..fdbc568f35 100644 --- a/goal_src/engine/ui/progress/progress.gc +++ b/goal_src/engine/ui/progress/progress.gc @@ -1081,8 +1081,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> *progress-state* which) (-> obj option-index)) (set! (-> obj next-display-state) (progress-screen memcard-loading)) @@ -1095,8 +1095,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1111,8 +1111,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> *progress-state* which) (-> obj option-index)) (if (zero? (-> s5-0 file (-> obj option-index) present)) @@ -1133,8 +1133,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-volume-off) (set! (-> *game-info* mode) 'play) @@ -1148,8 +1148,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1162,8 +1162,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1176,8 +1176,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen memcard-saving)) ) @@ -1188,8 +1188,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (= (-> obj display-state-stack 0) (progress-screen title)) ) @@ -1209,8 +1209,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen memcard-creating)) ) @@ -1221,8 +1221,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-volume-off) (set! (-> *game-info* mode) 'play) @@ -1243,8 +1243,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-volume-off) (set! (-> *game-info* mode) 'play) @@ -1258,8 +1258,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set-master-mode 'game) ) @@ -1270,8 +1270,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1291,8 +1291,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1305,8 +1305,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> *setting-control* default video-mode) @@ -1325,8 +1325,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> *progress-state* video-mode-choice) 'pal) (set! (-> obj next-display-state) (progress-screen invalid)) @@ -1347,8 +1347,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (else @@ -1358,8 +1358,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -1373,8 +1373,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1388,8 +1388,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-volume-off) (set! (-> *game-info* mode) 'play) @@ -1402,8 +1402,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1418,8 +1418,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen memcard-formatting)) ) @@ -1430,8 +1430,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-volume-off) (set! (-> *game-info* mode) 'play) @@ -1445,8 +1445,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen invalid)) ) @@ -1476,8 +1476,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! @@ -1520,8 +1520,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -1541,8 +1541,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! @@ -1590,8 +1590,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -1749,8 +1749,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -1854,8 +1854,8 @@ (the int (* 10.24 f30-0)) 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -2015,8 +2015,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -2120,8 +2120,8 @@ (the int (* 10.24 f30-1)) 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -2201,8 +2201,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj selected-option) #f) ) @@ -2229,8 +2229,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -2238,8 +2238,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (load-level-text-files @@ -2274,8 +2274,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) @@ -2307,8 +2307,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -2316,8 +2316,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (load-level-text-files @@ -2405,8 +2405,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons x)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x)) @@ -2439,8 +2439,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj selected-option) #f) (case (-> s5-0 (-> obj option-index) option-type) @@ -2519,8 +2519,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj level-transition) 2) ) @@ -2536,8 +2536,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj level-transition) 1) ) @@ -2551,8 +2551,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen fuel-cell)) (set! (-> obj stat-transition) #t) @@ -2566,8 +2566,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen money)) (set! (-> obj stat-transition) #t) @@ -2581,8 +2581,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj next-display-state) (progress-screen buzzer)) (set! (-> obj stat-transition) #t) @@ -2597,8 +2597,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (push! obj) (set! (-> obj next-display-state) (progress-screen settings)) @@ -2618,8 +2618,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -2637,8 +2637,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -3277,8 +3277,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set-blackout-frames 0) (set! *pause-lock* #f) @@ -3311,8 +3311,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (hide-progress-icons) (set! (-> self particles 3 init-pos x) -320.0) diff --git a/goal_src/engine/ui/text-h.gc b/goal_src/engine/ui/text-h.gc index 77556fc722..f55240d831 100644 --- a/goal_src/engine/ui/text-h.gc +++ b/goal_src/engine/ui/text-h.gc @@ -9,6 +9,7 @@ ;; Each game string is assigned an ID number. ;; This ID is used to lookup the string for the currently selected language. +;; GAME-TEXT-ID ENUM BEGINS (defenum game-text-id :type uint32 :bitfield #f @@ -36,6 +37,8 @@ (spanish #x117) (italian #x118) (japanese #x119) + (press-to-warp #x11c) + (press-to-exit #x11d) (aspect-ratio #x125) (video-mode #x126) (game-options #x127) @@ -144,8 +147,12 @@ (MISSING-orb-hint #x233) + (jungle-maindoor-hint #x23c) + (firecanyon-not-enough-cells #x24f) + (jungle-precursorbridge-hint #x25b) + (beach-gimmie #x262) (beach-sentinel #x263) (jungle-canyon-end #x264) @@ -157,6 +164,8 @@ (beach-seagulls-avalanche #x273) + (beach-flutflutegg-hint #x275) + (sidekick-hint-fish-powerup #x278) (sidekick-speech-hint-crate-darkeco1 #x281) @@ -164,18 +173,23 @@ (sidekick-speech-crate-steel-break1 #x283) (sidekick-speech-hint-crate-iron #x284) (sidekick-speech-hint-crate-steel #x285) + + (jungleb-eco-vents-opened #x289) (sidekick-speech-crate-steel-break2 #x28e) (sidekick-speech-hint-crate-darkeco2 #x28f) - + (yakow-owed-powercell #x297) - + (misty-teetertotter-bonk-dax-tutorial #x2a4) (daxter-blue-eco-plat-tutorial #x2a7) + (misty-bone-bridge-hint #x2aa) (fish? #x2a9) + (firecanyon-collect-cells-collected #x2b1) + (firecanyon-collect-cells-collected-reminder #x2b2) (firecanyon-collect-cells-text #x2b3) (caught #x2b4) (missed #x2b5) @@ -221,15 +235,19 @@ (rolling-ring-chase-1 #x324) (rolling-ring-chase-2 #x325) + (rolling-race-beat-record #x335) (sidekick-speech-hint-rolling-crate-darkeco #x336) + (rolling-dark-plants-location-hint #x339) + (rolling-dark-plants-hint #x33a) + (rolling-ring-hint-one-ring-down #x33f) (rolling-ring-hint-be-quick-to-next #x340) (rolling-ring-hint-be-quick-all #x341) - + (sunken-blue-eco-charger-hint #x345) - (sunken-qbert-hint #x34a) + (sunken-qbert-plat-hint #x34a) (sunken-blue-eco-charger-all-hint #x34d) @@ -237,10 +255,19 @@ (swamp-bats-hint #x364) ;; maybe we can ???? the bats. lol (flutflut-reminder #x368) - + + (village2-warp-gate-reminder #x36f) + (village2-warp-gate-reminder-annoyed #x370) + (village2-warp-gate-reminder-very-annoyed #x371) + (village2-not-enough-cells-levitator #x36c) (villlage2-levitator-cell-req-text #x372) - + + (rolling-race-time-string-prefix #x373) + (rolling-race-record-string-prefix #x374) + (rolling-race-new-record-string-prefix #x375) + (rolling-race-try-again-string #x376) + (village3-miner-money #x400) (village3-oracle-money #x401) (snow-ram-3-left #x402) @@ -274,16 +301,25 @@ (cave-swing-poles #x426) (assistant-lavatube-powercell-hint #x428) - + (village3-gondola-malfunctioning #x429) + (village3-gondola-reactivated #x42a) + (snow-frozen-crate #x42b) ;; task name? (snow-bumpers #x42c) + (darkcave-light-crystal-low-light-hint #x437) + (darkcave-light-crystal-hint #x438) + (cave-trap-nest-hint #x440) - + (snow-fort-reminder #x443) + (ice-cube-hint #x448) - + + (village3-warp-gate-reminder #x452) + (village3-warp-gate-reminder=annoyed #x453) + (village3-warp-gate-reminder-very-annoyed #x454) (lavatube-powercell-req-text #x455) - + (fire-canyon-end #x500) (fire-canyon-buzzer #x501) @@ -309,11 +345,26 @@ (citadel-sage-red #x803) (citadel-sage-yellow #x804) (citadel-sage-green #x805) + (citadel-break-generator-hint #x806) + (citadel-lurker-bunny-alert #x808) + (citadel-break-generators-reminder #x809) + (citadel-climb-plat-hint #x80c) (misty-battle-finished #x813) + (training-precursor-orbs #x901) + (training-power-cells #x902) + (training-blue-eco-vent #x907) + (training-eco-green #x908) + (training-eco-blue #x909) + (training-precursor-door #x90b) + (training-double-jump #x90e) + (sage-voicebox-hint-crate-iron #x917) + (training-warp-gate-blocked #x919) + (training-warp-gate-reminder #x91a) + (training-gimmie-task-name #x91b) (training-buzzer-task-name #x91c) (training-door-task-name #x91d) @@ -323,7 +374,7 @@ (inc #xf10) (europe #xf11) ) - +;; GAME-TEXT-ID ENUM ENDS ;; an individual string. (deftype game-text (structure) diff --git a/goal_src/engine/util/smush-control-h.gc b/goal_src/engine/util/smush-control-h.gc index 44dc4b5a64..77ea0f91d3 100644 --- a/goal_src/engine/util/smush-control-h.gc +++ b/goal_src/engine/util/smush-control-h.gc @@ -19,6 +19,7 @@ (damp-period float :offset-assert 24) ;; set a negative value here to flag as die on next update (ticks float :offset-assert 28) ) + :pack-me :method-count-assert 15 :size-assert #x20 :flag-assert #xf00000020 diff --git a/goal_src/engine/util/sync-info-h.gc b/goal_src/engine/util/sync-info-h.gc index 895272eaa5..e796005e3a 100644 --- a/goal_src/engine/util/sync-info-h.gc +++ b/goal_src/engine/util/sync-info-h.gc @@ -54,6 +54,7 @@ ((pause-after-out float :offset-assert 8) (pause-after-in float :offset-assert 12) ) + :pack-me :method-count-assert 18 :size-assert #x10 :flag-assert #x1200000010 @@ -68,13 +69,14 @@ (start-time int64 :offset-assert 16) (value float :offset-assert 24) ) + :pack-me :method-count-assert 11 :size-assert #x1c :flag-assert #xb0000001c (:methods - (set-params! (_type_ int int float) float 9) - (update! (_type_) float 10) - ) + (set-params! (_type_ int int float) float 9) + (update! (_type_ ) float 10) + ) ) (deftype oscillating-float (structure) diff --git a/goal_src/levels/beach/lurkerpuppy.gc b/goal_src/levels/beach/lurkerpuppy.gc index 597287b27a..b399d13954 100644 --- a/goal_src/levels/beach/lurkerpuppy.gc +++ b/goal_src/levels/beach/lurkerpuppy.gc @@ -167,8 +167,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((a0-14 (-> self skel root-channel 0))) @@ -439,8 +439,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual nav-enemy-victory) (none) diff --git a/goal_src/levels/citadel/citadel-obs.gc b/goal_src/levels/citadel/citadel-obs.gc index 1bb6b1bf52..84296747e3 100644 --- a/goal_src/levels/citadel/citadel-obs.gc +++ b/goal_src/levels/citadel/citadel-obs.gc @@ -5,3 +5,2465 @@ ;; name in dgo: citadel-obs ;; dgos: CIT, L1 +(define-extern *citadelcam-sg* skeleton-group) +(define-extern *citb-generator-sg* skeleton-group) +(define-extern *citb-generator-broken-sg* skeleton-group) +(define-extern *citb-hose-sg* skeleton-group) +(define-extern *citb-coil-sg* skeleton-group) +(define-extern *citb-robotboss-sg* skeleton-group) +(define-extern *citb-robotboss-nose-sg* skeleton-group) +(define-extern *citb-robotboss-head-sg* skeleton-group) +(define-extern *citb-robotboss-gun-sg* skeleton-group) +(define-extern *citb-robotboss-leftshoulder-sg* skeleton-group) +(define-extern *citb-robotboss-rightshoulder-sg* skeleton-group) +(define-extern *citb-robotboss-leftarm-sg* skeleton-group) +(define-extern *citb-robotboss-rightarm-sg* skeleton-group) +(define-extern *citb-robotboss-belly-sg* skeleton-group) +(define-extern *citb-launcher-sg* skeleton-group) +(define-extern *citb-button-sg* skeleton-group) +(define-extern *citb-iris-door-sg* skeleton-group) +(define-extern *citb-disc-d-sg* skeleton-group) +(define-extern *citb-disc-c-sg* skeleton-group) +(define-extern *citb-disc-b-sg* skeleton-group) +(define-extern *citb-disc-a-sg* skeleton-group) +(define-extern *citb-arm-shoulder-b-sg* skeleton-group) +(define-extern *citb-arm-shoulder-a-sg* skeleton-group) +(define-extern *citb-arm-d-sg* skeleton-group) +(define-extern *citb-arm-c-sg* skeleton-group) +(define-extern *citb-arm-b-sg* skeleton-group) +(define-extern *citb-arm-a-sg* skeleton-group) + +(declare-type citadelcam process-drawable) +(declare-type citb-generator process-drawable) +(declare-type citb-disc process-drawable) +(declare-type citb-robotboss process-drawable) +(declare-type citb-coil process-drawable) +(declare-type citb-hose process-drawable) +(declare-type citb-generator process-drawable) + +(define-extern citadelcam-idle (state citadelcam)) ;; unknown type +(define-extern citadelcam-stair-plats (state citadelcam)) ;; unknown type +(define-extern citb-generator-broken (state citb-generator)) ;; unknown type +(define-extern citb-generator-idle (state citb-generator)) ;; unknown type +(define-extern citb-disc-idle (state citb-disc)) ;; unknown type +(define-extern citb-robotboss-die (state citb-robotboss)) ;; unknown type +(define-extern citb-robotboss-idle (state citb-robotboss)) ;; unknown type +(define-extern citb-coil-broken (state citb-coil)) ;; unknown type +(define-extern citb-coil-idle (state citb-coil)) ;; unknown type +(define-extern citb-coil-break (state citb-coil)) ;; unknown type +(define-extern citb-hose-die (state citb-hose)) ;; unknown type +(define-extern citb-hose-idle (state citb-hose)) ;; unknown type +(define-extern citb-hose-spawn (state citb-hose)) ;; unknown type +(define-extern citb-generator-break (state citb-generator)) ;; unknown type + +;; DECOMP BEGINS + +(deftype citb-arm-section (process-drawable) + ((sync sync-info :inline :offset-assert 176) + (cull-dir-local vector :inline :offset-assert 192) + (cull-dot float :offset-assert 208) + (rot-scale float :offset-assert 212) + (y-angle float :offset-assert 216) + ) + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + (:methods + (init-root! (_type_) none 20) + (setup-new-process! (_type_) none 21) + (idle () _type_ :state 22) + ) + ) + + +(defskelgroup *citb-arm-a-sg* citb-arm + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 14) + :longest-edge (meters 9) + ) + +(defskelgroup *citb-arm-b-sg* citb-arm + 4 + 7 + ((5 (meters 20)) (6 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 10) + ) + +(defskelgroup *citb-arm-c-sg* citb-arm + 8 + 11 + ((9 (meters 20)) (10 (meters 999999))) + :bounds (static-spherem 0 0 0 25) + :longest-edge (meters 11) + ) + +(defskelgroup *citb-arm-d-sg* citb-arm + 12 + 15 + ((13 (meters 20)) (14 (meters 999999))) + :bounds (static-spherem 0 0 0 29) + :longest-edge (meters 8) + ) + +(defskelgroup *citb-arm-shoulder-a-sg* citb-arm-shoulder + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10) + ) + +(defskelgroup *citb-arm-shoulder-b-sg* citb-arm-shoulder + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10) + ) + +(defstate idle (citb-arm-section) + :virtual #t + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (while #t + (cond + ((< (- (-> (target-pos 0) y) (-> self root trans y)) -122880.0) + (set! (-> self draw force-lod) 1) + ) + (else + (set! (-> self draw force-lod) 0) + 0 + ) + ) + (set! + (-> self y-angle) + (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale)) + ) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self y-angle)) + (vector-orient-by-quat! gp-0 (-> self cull-dir-local) (-> self root quat)) + (vector-! s5-0 (-> self root trans) (camera-pos)) + (set! (-> gp-0 y) 0.0) + (set! (-> s5-0 y) 0.0) + (vector-normalize! gp-0 1.0) + (vector-normalize! s5-0 1.0) + (if (>= (vector-dot gp-0 s5-0) (-> self cull-dot)) + (logior! (-> self draw status) 2) + (set! (-> self draw status) (logand -3 (-> self draw status))) + ) + (suspend) + ) + ) + (none) + ) + :post + (the-as (function none :behavior citb-arm-section) ja-post) + ) + +(defmethod init-root! citb-arm-section ((obj citb-arm-section)) + (set! (-> obj root) (new 'process 'trsqv)) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-section ((obj citb-arm-section)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (cond + ((> (-> obj sync period) 0) + (set! (-> obj rot-scale) 1.0) + ) + (else + (set! (-> obj rot-scale) -1.0) + (let ((v1-6 (abs (the-as int (-> obj sync period))))) + (set! (-> obj sync period) (the-as uint v1-6)) + ) + ) + ) + (logior! (-> obj skel status) 1) + (set-vector! (-> obj cull-dir-local) 0.0 0.0 -1.0 1.0) + (set! (-> obj cull-dot) (cos 5461.3335)) + 0 + (none) + ) + +(defmethod + copy-defaults! + citb-arm-section + ((obj citb-arm-section) (arg0 res-lump)) + (init-root! obj) + (process-drawable-from-entity! obj arg0) + (setup-new-process! obj) + (go (method-of-object obj idle)) + (none) + ) + +(deftype citb-arm (citb-arm-section) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(defstate idle (citb-arm) + :virtual #t + :trans + (the-as (function none :behavior citb-arm) rider-trans) + :post + (behavior () + (if (logtest? (-> self draw status) 2) + (dummy-48 (-> self root-override)) + (dummy-49 (-> self root-override)) + ) + (rider-post) + (none) + ) + ) + +(defmethod init-root! citb-arm ((obj citb-arm)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 40960.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm ((obj citb-arm)) + ((the-as (function citb-arm-section none) (find-parent-method citb-arm 21)) + obj + ) + (set! (-> obj draw origin-joint-index) (the-as uint 4)) + (set-vector! (-> obj cull-dir-local) 0.0 0.0 -1.0 1.0) + (set! (-> obj cull-dot) (cos 5461.3335)) + 0 + (none) + ) + +(deftype citb-arm-shoulder (citb-arm-section) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(defmethod setup-new-process! citb-arm-shoulder ((obj citb-arm-shoulder)) + ((the-as + (function citb-arm-section none) + (find-parent-method citb-arm-shoulder 21) + ) + obj + ) + (set! (-> obj draw origin-joint-index) (the-as uint 4)) + (set-vector! (-> obj cull-dir-local) 1.0 0.0 1.0 1.0) + (set! (-> obj cull-dot) (cos 8374.045)) + 0 + (none) + ) + +(deftype citb-arm-a (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(deftype citb-arm-b (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(deftype citb-arm-c (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(deftype citb-arm-d (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(deftype citb-arm-shoulder-a (citb-arm-shoulder) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(deftype citb-arm-shoulder-b (citb-arm-shoulder) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + + +(defmethod setup-new-process! citb-arm-a ((obj citb-arm-a)) + (initialize-skeleton obj *citb-arm-a-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-a 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -184320.0) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-b ((obj citb-arm-b)) + (initialize-skeleton obj *citb-arm-b-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-b 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -225280.0) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-c ((obj citb-arm-c)) + (initialize-skeleton obj *citb-arm-c-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-c 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -266240.0) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-d ((obj citb-arm-d)) + (initialize-skeleton obj *citb-arm-d-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-d 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -307200.0) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-shoulder-a ((obj citb-arm-shoulder-a)) + (initialize-skeleton obj *citb-arm-shoulder-a-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-shoulder-a 21)) + (the-as citb-arm obj) + ) + 0 + (none) + ) + +(defmethod setup-new-process! citb-arm-shoulder-b ((obj citb-arm-shoulder-b)) + (initialize-skeleton obj *citb-arm-shoulder-b-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-shoulder-b 21)) + (the-as citb-arm obj) + ) + 0 + (none) + ) + +(defskelgroup *citb-disc-a-sg* citb-disc + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5) + ) + +(defskelgroup *citb-disc-b-sg* citb-disc + 5 + 9 + ((6 (meters 20)) (7 (meters 40)) (8 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5) + ) + +(defskelgroup *citb-disc-c-sg* citb-disc + 10 + 14 + ((11 (meters 20)) (12 (meters 40)) (13 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 11) + ) + +(defskelgroup *citb-disc-d-sg* citb-disc + 15 + 19 + ((16 (meters 20)) (17 (meters 40)) (18 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 8) + ) + +(deftype citb-disc (process-drawable) + ((root-override collide-shape-moving :offset 112) + (sync sync-info :inline :offset-assert 176) + (rot-scale float :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) + + +(defstate citb-disc-idle (citb-disc) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'touch) + (send-event arg0 'no-look-around 75) + #f + ) + ) + ) + ) + :trans + (the-as (function none :behavior citb-disc) rider-trans) + :code + (behavior () + (while #t + (update! (-> self sound)) + (quaternion-axis-angle! + (-> self root-override quat) + 0.0 + 1.0 + 0.0 + (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-disc) rider-post) + ) + +(defmethod init! citb-disc ((obj citb-disc)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 19)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod dummy-21 citb-disc ((obj citb-disc)) + 0 + (none) + ) + +(defmethod copy-defaults! citb-disc ((obj citb-disc) (arg0 res-lump)) + (init! obj) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (cond + ((> (-> obj sync period) 0) + (set! (-> obj rot-scale) 1.0) + ) + (else + (set! (-> obj rot-scale) -1.0) + (let ((v1-8 (abs (the-as int (-> obj sync period))))) + (set! (-> obj sync period) (the-as uint v1-8)) + ) + ) + ) + (dummy-21 obj) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "rotate-plat") + :volume #x400 + :fo-max 20 + ) + (-> obj root-override trans) + ) + ) + (logior! (-> obj skel status) 1) + (go citb-disc-idle) + (none) + ) + +(deftype citb-disc-a (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + + +(deftype citb-disc-b (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + + +(deftype citb-disc-c (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + + +(deftype citb-disc-d (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + + +(defmethod dummy-21 citb-disc-a ((obj citb-disc-a)) + (initialize-skeleton obj *citb-disc-a-sg* '()) + 0 + (none) + ) + +(defmethod dummy-21 citb-disc-b ((obj citb-disc-b)) + (initialize-skeleton obj *citb-disc-b-sg* '()) + 0 + (none) + ) + +(defmethod dummy-21 citb-disc-c ((obj citb-disc-c)) + (initialize-skeleton obj *citb-disc-c-sg* '()) + 0 + (none) + ) + +(defmethod dummy-21 citb-disc-d ((obj citb-disc-d)) + (initialize-skeleton obj *citb-disc-d-sg* '()) + 0 + (none) + ) + +(deftype citb-iris-door (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + + +(defskelgroup *citb-iris-door-sg* citb-iris-door + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defmethod TODO-RENAME-24 citb-iris-door ((obj citb-iris-door)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-25 citb-iris-door ((obj citb-iris-door)) + (initialize-skeleton obj *citb-iris-door-sg* '()) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (set! (-> obj auto-close) #t) + (process-entity-status! obj (entity-perm-status complete) #t) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) + +(defskelgroup *citb-button-sg* citb-button + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +(deftype citb-button (basebutton) + () + :heap-base #x90 + :method-count-assert 32 + :size-assert #x100 + :flag-assert #x2000900100 + ) + + +(defmethod TODO-RENAME-27 citb-button ((obj citb-button)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) nothing) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + (the-as collide-shape-moving 0) + ) + +(defmethod TODO-RENAME-26 citb-button ((obj citb-button)) + (initialize-skeleton obj *citb-button-sg* '()) + (logior! (-> obj skel status) 1) + (ja-channel-set! 1) + (cond + ((-> obj down?) + (let ((s5-0 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-0 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! + (-> s5-0 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> obj draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + (else + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + ) + ) + (set! (-> obj anim-speed) 2.0) + (set! (-> obj timeout) 1.0) + (dummy-47 (-> obj root-override)) + (ja-post) + (none) + ) + +(deftype citb-launcher (plat) + ((launcher (pointer launcher) :offset-assert 264) + ) + :heap-base #xa0 + :method-count-assert 33 + :size-assert #x10c + :flag-assert #x2100a0010c + ) + + +(defstate plat-path-active (citb-launcher) + :virtual #t + :post + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-path-active) post))) + (if t9-0 + ((the-as (function none :behavior citb-launcher) t9-0)) + ) + ) + (send-event + (ppointer->process (-> self launcher)) + 'trans + (-> self basetrans) + ) + (none) + ) + ) + +(defskelgroup *citb-launcher-sg* citb-launcher + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +(defmethod get-unlit-skel citb-launcher ((obj citb-launcher)) + *citb-launcher-sg* + ) + +(defmethod dummy-26 citb-launcher ((obj citb-launcher)) + (let + ((f30-0 (res-lump-float (-> obj entity) 'spring-height :default 163840.0)) + (s5-0 (res-lump-value (-> obj entity) 'mode uint128)) + (s4-0 (get-process *default-dead-pool* launcher #x4000)) + ) + (set! (-> obj launcher) (the-as (pointer launcher) (when s4-0 + (let + ((t9-3 + (method-of-type + launcher + activate + ) + ) + ) + (t9-3 + (the-as launcher s4-0) + obj + 'launcher + (the-as + pointer + #x70004000 + ) + ) + ) + (run-now-in-process + s4-0 + launcher-init-by-other + (-> + obj + root-override + trans + ) + f30-0 + s5-0 + 81920.0 + ) + (-> s4-0 ppointer) + ) + ) + ) + ) + (set! (-> obj root-override root-prim local-sphere w) 18432.0) + (logclear! (-> obj mask) (process-mask actor-pause)) + 0 + (none) + ) + +(defskelgroup *citb-robotboss-sg* citb-robotboss + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 17 0 18) + :longest-edge (meters 6) + ) + +(defskelgroup *citb-robotboss-head-sg* citb-robotboss + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 30 10 12) + :longest-edge (meters 2) + ) + +(defskelgroup *citb-robotboss-nose-sg* citb-robotboss + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 10 20 15) + :longest-edge (meters 0) + ) + +(defskelgroup *citb-robotboss-gun-sg* citb-robotboss + 9 + 11 + ((10 (meters 999999))) + :bounds (static-spherem 0 28 -10 14) + :longest-edge (meters 5) + ) + +(defskelgroup *citb-robotboss-leftshoulder-sg* citb-robotboss + 12 + 14 + ((13 (meters 999999))) + :bounds (static-spherem 17 27 0 14) + :longest-edge (meters 6) + ) + +(defskelgroup *citb-robotboss-rightshoulder-sg* citb-robotboss + 15 + 17 + ((16 (meters 999999))) + :bounds (static-spherem -17 27 0 14) + :longest-edge (meters 6) + ) + +(defskelgroup *citb-robotboss-leftarm-sg* citb-robotboss + 18 + 20 + ((19 (meters 999999))) + :bounds (static-spherem 15 5 -10 20) + :longest-edge (meters 9) + ) + +(defskelgroup *citb-robotboss-rightarm-sg* citb-robotboss + 21 + 23 + ((22 (meters 999999))) + :bounds (static-spherem -15 0 -8 16) + :longest-edge (meters 3) + ) + +(defskelgroup *citb-robotboss-belly-sg* citb-robotboss + 24 + 26 + ((25 (meters 999999))) + :bounds (static-spherem 0 -2 3 10) + :longest-edge (meters 3) + ) + +(deftype citb-robotboss (process-drawable) + ((root-override collide-shape :offset 112) + (shield-on symbol :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + + +(defstate citb-robotboss-idle (citb-robotboss) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (sv-96 int) (sv-112 int)) + (the-as object (cond + ((= arg2 'shield-off) + (stop! (-> self sound)) + (if (-> self shield-on) + (sound-play-by-name + (static-sound-name "robotcage-off") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (set! (-> self shield-on) #f) + #f + ) + ((= arg2 'shield-on) + (let ((v0-3 #t)) + (set! (-> self shield-on) v0-3) + v0-3 + ) + ) + ((= arg2 'die) + (dummy-18 self) + (the-as symbol (deactivate self)) + ) + ((or (= arg2 'touch) (= arg2 'attack)) + (let ((s4-0 sound-play-by-name) + (s3-0 + (make-u128 #x7061 (the-as uint #x7a2d646c65696873)) + ) + (s2-0 (new-sound-id)) + (s1-0 1024) + (s0-0 0) + ) + (set! sv-96 0) + (set! sv-112 1) + (let ((t2-1 (target-pos 0))) + (s4-0 + (the-as sound-name s3-0) + s2-0 + s1-0 + s0-0 + sv-96 + sv-112 + (the-as symbol t2-1) + ) + ) + ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'shove) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (let ((v1-21 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-21 shove-up) 8192.0) + (set! (-> v1-21 shove-back) 12288.0) + (set! (-> a1-3 param 1) (the-as uint v1-21)) + ) + (the-as symbol (send-event-function arg0 a1-3)) + ) + ) + ) + ) + ) + :code + (behavior () + (let* ((s5-0 (get-process *default-dead-pool* manipy #x4000)) + (gp-0 (when s5-0 + (let ((t9-1 (method-of-type manipy activate))) + (t9-1 + (the-as manipy s5-0) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-nose-sg* + #f + ) + (-> s5-0 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-0) 'anim-mode 'loop) + (send-event + (ppointer->process gp-0) + 'art-joint-anim + "citb-robotboss-nose-idle" + 0 + ) + (send-event (ppointer->process gp-0) 'draw #t) + ) + (let* ((s5-1 (get-process *default-dead-pool* manipy #x4000)) + (gp-1 (when s5-1 + (let ((t9-7 (method-of-type manipy activate))) + (t9-7 + (the-as manipy s5-1) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-head-sg* + #f + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-1) 'anim-mode 'loop) + (send-event + (ppointer->process gp-1) + 'art-joint-anim + "citb-robotboss-head-idle" + 0 + ) + (send-event (ppointer->process gp-1) 'draw #t) + ) + (let* ((s5-2 (get-process *default-dead-pool* manipy #x4000)) + (gp-2 (when s5-2 + (let ((t9-13 (method-of-type manipy activate))) + (t9-13 + (the-as manipy s5-2) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-2 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-gun-sg* + #f + ) + (-> s5-2 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-2) 'anim-mode 'loop) + (send-event + (ppointer->process gp-2) + 'art-joint-anim + "citb-robotboss-gun-idle" + 0 + ) + (send-event (ppointer->process gp-2) 'draw #t) + ) + (let* ((s5-3 (get-process *default-dead-pool* manipy #x4000)) + (gp-3 (when s5-3 + (let ((t9-19 (method-of-type manipy activate))) + (t9-19 + (the-as manipy s5-3) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-3 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-leftshoulder-sg* + #f + ) + (-> s5-3 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-3) 'anim-mode 'loop) + (send-event + (ppointer->process gp-3) + 'art-joint-anim + "citb-robotboss-leftshoulder-idle" + 0 + ) + (send-event (ppointer->process gp-3) 'draw #t) + ) + (let* ((s5-4 (get-process *default-dead-pool* manipy #x4000)) + (gp-4 (when s5-4 + (let ((t9-25 (method-of-type manipy activate))) + (t9-25 + (the-as manipy s5-4) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-4 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-rightshoulder-sg* + #f + ) + (-> s5-4 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-4) 'anim-mode 'loop) + (send-event + (ppointer->process gp-4) + 'art-joint-anim + "citb-robotboss-rightshoulder-idle" + 0 + ) + (send-event (ppointer->process gp-4) 'draw #t) + ) + (let* ((s5-5 (get-process *default-dead-pool* manipy #x4000)) + (gp-5 (when s5-5 + (let ((t9-31 (method-of-type manipy activate))) + (t9-31 + (the-as manipy s5-5) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-5 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-leftarm-sg* + #f + ) + (-> s5-5 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-5) 'anim-mode 'loop) + (send-event + (ppointer->process gp-5) + 'art-joint-anim + "citb-robotboss-leftarm-idle" + 0 + ) + (send-event (ppointer->process gp-5) 'draw #t) + ) + (let* ((s5-6 (get-process *default-dead-pool* manipy #x4000)) + (gp-6 (when s5-6 + (let ((t9-37 (method-of-type manipy activate))) + (t9-37 + (the-as manipy s5-6) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-6 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-rightarm-sg* + #f + ) + (-> s5-6 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-6) 'anim-mode 'loop) + (send-event + (ppointer->process gp-6) + 'art-joint-anim + "citb-robotboss-rightarm-idle" + 0 + ) + (send-event (ppointer->process gp-6) 'draw #t) + ) + (let* ((s5-7 (get-process *default-dead-pool* manipy #x4000)) + (gp-7 (when s5-7 + (let ((t9-43 (method-of-type manipy activate))) + (t9-43 + (the-as manipy s5-7) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-7 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-belly-sg* + #f + ) + (-> s5-7 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-7) 'anim-mode 'loop) + (send-event + (ppointer->process gp-7) + 'art-joint-anim + "citb-robotboss-belly-idle" + 0 + ) + (send-event (ppointer->process gp-7) 'draw #t) + ) + (dummy-47 (-> self root-override)) + (while #t + (when (-> self shield-on) + (update! (-> self sound)) + (spawn (-> self part) (-> self root-override trans)) + (set! (-> *palette-fade-controls* control 7 fade) 1.0) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-robotboss) ja-post) + ) + +(defstate citb-robotboss-die (citb-robotboss) + :code + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defmethod copy-defaults! citb-robotboss ((obj citb-robotboss) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-robotboss-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 601) obj) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj shield-on) #t) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "robotcage-lp") + :volume #x400 + :fo-max #x96 + ) + (-> obj root-override trans) + ) + ) + (if + (= (get-task-status (-> obj entity extra perm task)) (task-status invalid)) + (go citb-robotboss-die) + (go citb-robotboss-idle) + ) + (none) + ) + +(defskelgroup *citb-coil-sg* citb-coil + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +(deftype citb-coil (process-drawable) + ((part-off sparticle-launch-control :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + + +(defmethod relocate citb-coil ((obj citb-coil) (arg0 int)) + (if (nonzero? (-> obj part-off)) + (&+! (-> obj part-off) arg0) + ) + (the-as citb-coil ((method-of-type process-drawable relocate) obj arg0)) + ) + +(defmethod deactivate citb-coil ((obj citb-coil)) + (if (nonzero? (-> obj part-off)) + (kill-and-free-particles (-> obj part-off)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +(defstate citb-coil-idle (citb-coil) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go citb-coil-break) + ) + ) + ) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-post) + (none) + ) + ) + +(defstate citb-coil-break (citb-coil) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 30) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go citb-coil-broken) + (none) + ) + :post + (the-as (function none :behavior citb-coil) ja-post) + ) + +(defstate citb-coil-broken (citb-coil) + :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 5)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + 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 5)) + 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! + ) + ) + ) + (while #t + (spawn (-> self part-off) (-> self root trans)) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-coil) ja-post) + ) + +(defmethod copy-defaults! citb-coil ((obj citb-coil) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-coil-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 596) obj) + ) + (set! + (-> obj part-off) + (create-launch-control (-> *part-group-id-table* 602) obj) + ) + (let + ((v1-9 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-9)) + (set! v1-9 (-> obj entity)) + ) + (if (logtest? (-> v1-9 extra perm status) (entity-perm-status complete)) + (go citb-coil-broken) + (go citb-coil-idle) + ) + ) + (none) + ) + +(defskelgroup *citb-hose-sg* citb-hose + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +(deftype citb-hose (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defbehavior + citb-hose-event-handler citb-hose + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('spawn) + (go citb-hose-spawn) + ) + (('trigger) + (go citb-hose-die) + ) + ) + ) + +(defstate citb-hose-idle (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + 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 3)) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +(defstate citb-hose-spawn (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (ja-channel-push! 1 30) + (let ((a0-1 (-> self skel root-channel 0))) + (set! + (-> a0-1 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-1 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-1 param 1) 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 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go citb-hose-idle) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +(defstate citb-hose-die (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 30) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (anim-loop) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +(defmethod copy-defaults! citb-hose ((obj citb-hose) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-hose-sg* '()) + (let + ((v1-3 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-3)) + (set! v1-3 (-> obj entity)) + ) + (if (logtest? (-> v1-3 extra perm status) (entity-perm-status complete)) + (go citb-hose-die) + (go citb-hose-idle) + ) + ) + (none) + ) + +(deftype citb-chains (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + + +(defskelgroup *citb-generator-sg* citb-generator + 0 + 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +(defskelgroup *citb-generator-broken-sg* citb-generator + 2 + 4 + ((3 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +(deftype citb-generator (process-drawable) + ((root-override collide-shape :offset 112) + (normal-look lod-set :inline :offset-assert 176) + (broken-look lod-set :inline :offset-assert 212) + (mushroom-pos vector :inline :offset-assert 256) + (mushroom symbol :offset-assert 272) + (birth-fuel-cell symbol :offset-assert 276) + (trigger-others symbol :offset-assert 280) + (part-broken sparticle-launch-control :offset-assert 284) + (part-mushroom sparticle-launch-control :offset-assert 288) + ) + :heap-base #xc0 + :method-count-assert 22 + :size-assert #x124 + :flag-assert #x1600c00124 + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) + + +(defmethod relocate citb-generator ((obj citb-generator) (arg0 int)) + (if (nonzero? (-> obj part-broken)) + (&+! (-> obj part-broken) arg0) + ) + (if (nonzero? (-> obj part-mushroom)) + (&+! (-> obj part-mushroom) arg0) + ) + (the-as citb-generator ((method-of-type process-drawable relocate) obj arg0)) + ) + +(defmethod deactivate citb-generator ((obj citb-generator)) + (if (nonzero? (-> obj part-broken)) + (kill-and-free-particles (-> obj part-broken)) + ) + (if (nonzero? (-> obj part-mushroom)) + (kill-and-free-particles (-> obj part-mushroom)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +(defbehavior citb-generator-trigger-others citb-generator () + (let ((gp-0 (entity-actor-count (-> self entity) 'alt-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'alt-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + (let ((gp-1 (-> *display* base-frame-counter))) + (while (< (- (-> *display* base-frame-counter) gp-1) 150) + (if (movie?) + (set! gp-1 (-> *display* base-frame-counter)) + ) + (suspend) + ) + ) + (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-1 gp-2) + (let ((s4-1 (entity-actor-lookup (-> self entity) 'trigger-actor s5-1)) + (a1-6 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 0) + (set! (-> a1-6 message) 'trigger) + (let ((t9-8 send-event-function) + (v1-19 s4-1) + ) + (when (not (t9-8 (if v1-19 + (-> v1-19 extra process) + ) + a1-6 + ) + ) + (entity-birth-no-kill s4-1) + (suspend) + (send-event (if s4-1 + (-> s4-1 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defstate citb-generator-idle (citb-generator) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (-> self mushroom) + (increment-success-for-hint (game-text-id citadel-break-generator-hint)) + (increment-success-for-hint + (game-text-id citadel-break-generators-reminder) + ) + ) + (go citb-generator-break) + ) + (('trigger) + #t + ) + ) + ) + :exit + (behavior () + (stop! (-> self sound)) + (none) + ) + :code + (behavior () + (lods-assign! (-> self draw) (-> self normal-look)) + (dummy-47 (-> self root-override)) + (while #t + (spawn (-> self part) (-> self root-override trans)) + (update! (-> self sound)) + (if (-> self mushroom) + (spawn (-> self part-mushroom) (-> self mushroom-pos)) + ) + (if (not (-> self mushroom)) + (set! + (-> *palette-fade-controls* control 3 fade) + (+ 0.3333 (-> *palette-fade-controls* control 3 fade)) + ) + ) + (when + (and + *target* + (>= + 32768.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (if (-> self mushroom) + (level-hint-spawn + (game-text-id citadel-break-generator-hint) + "sksp0381" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id citadel-break-generators-reminder) + "sksp0384" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-generator) ja-post) + ) + +(defstate citb-generator-break (citb-generator) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'open-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'open-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'open) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'open + ) + ) + ) + ) + ) + ) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-7 (method-of-type part-tracker activate))) + (t9-7 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 598) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (sound-play-by-name + (static-sound-name "sagecage-open") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (go citb-generator-broken) + (none) + ) + :post + (the-as (function none :behavior citb-generator) ja-post) + ) + +(defstate citb-generator-broken (citb-generator) + :code + (behavior () + (lods-assign! (-> self draw) (-> self broken-look)) + (dummy-47 (-> self root-override)) + (cond + ((-> self birth-fuel-cell) + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #t) + (when (-> self child) + (while (-> self child) + (suspend) + ) + (citb-generator-trigger-others) + ) + ) + (else + (citb-generator-trigger-others) + ) + ) + (anim-loop) + (none) + ) + :post + (behavior () + (spawn (-> self part-broken) (-> self root-override trans)) + (ja-post) + (none) + ) + ) + +(defmethod init! citb-generator ((obj citb-generator)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod dummy-21 citb-generator ((obj citb-generator)) + (initialize-skeleton obj *citb-generator-sg* '()) + (dummy-9 + (-> obj normal-look) + *citb-generator-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (dummy-9 + (-> obj broken-look) + *citb-generator-broken-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! + (-> obj birth-fuel-cell) + (< (the-as uint 1) (the-as uint (-> obj entity extra perm task))) + ) + (set! (-> obj trigger-others) #f) + (set! (-> obj mushroom-pos quad) (-> obj root-override trans quad)) + (let ((f30-0 0.0)) + (cond + ((name= (-> obj name) "citb-generator-1") + (set! (-> obj mushroom) #t) + (set! f30-0 21845.334) + ) + ((name= (-> obj name) "citb-generator-2") + (set! (-> obj mushroom) #t) + (set! f30-0 16384.0) + ) + ((name= (-> obj name) "citb-generator-3") + (set! (-> obj mushroom) #t) + (set! f30-0 16384.0) + ) + ((name= (-> obj name) "citb-generator-4") + (set! (-> obj mushroom) #t) + (set! f30-0 -5461.3335) + ) + (else + (set! (-> obj mushroom) #f) + ) + ) + (when (-> obj mushroom) + (+! (-> obj mushroom-pos x) (* 19251.2 (sin f30-0))) + (+! (-> obj mushroom-pos z) (* 19251.2 (cos f30-0))) + ) + ) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 600) obj) + ) + (set! + (-> obj part-broken) + (create-launch-control (-> *part-group-id-table* 597) obj) + ) + (set! + (-> obj part-mushroom) + (create-launch-control (-> *part-group-id-table* 599) obj) + ) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "mushroom-gen") + :volume #x400 + :fo-max 20 + ) + (-> obj root-override trans) + ) + ) + 0 + (none) + ) + +(defmethod copy-defaults! citb-generator ((obj citb-generator) (arg0 res-lump)) + (init! obj) + (process-drawable-from-entity! obj arg0) + (dummy-21 obj) + (let + ((v1-4 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-4)) + (set! v1-4 (-> obj entity)) + ) + (if (logtest? (-> v1-4 extra perm status) (entity-perm-status complete)) + (go citb-generator-broken) + (go citb-generator-idle) + ) + ) + (none) + ) + +(defskelgroup *citadelcam-sg* citadelcam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 0) + ) + +(deftype citadelcam (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defstate citadelcam-idle (citadelcam) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (when + (and + (task-complete? *game-info* (game-task citadel-sage-blue)) + (task-complete? *game-info* (game-task citadel-sage-red)) + (task-complete? *game-info* (game-task citadel-sage-yellow)) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go citadelcam-stair-plats) + ) + ) + ) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (anim-loop) + (none) + ) + ) + +(defstate citadelcam-stair-plats (citadelcam) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + (let* ((gp-1 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-2 (ppointer->handle (when gp-1 + (let + ((t9-6 (method-of-type pov-camera activate)) + ) + (t9-6 + (the-as pov-camera gp-1) + self + 'pov-camera + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + pov-camera-init-by-other + (-> self root trans) + *citadelcam-sg* + "citadelcam-stair-plats" + 0 + #f + '() + ) + (-> gp-1 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-2)) + (suspend) + ) + ) + (level-hint-spawn + (game-text-id citadel-climb-plat-hint) + "sksp0387" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (go citadelcam-idle) + (none) + ) + ) + +(defmethod copy-defaults! citadelcam ((obj citadelcam) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go citadelcam-idle) + (none) + ) + +(deftype citb-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + + +(defstate battlecontroller-play-intro-camera (citb-battlecontroller) + :virtual #t + :code + (behavior () + (level-hint-spawn + (game-text-id citadel-lurker-bunny-alert) + "sksp0383" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (suspend) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let + ((t9-2 (method-of-type pov-camera activate)) + ) + (t9-2 + (the-as pov-camera gp-0) + self + 'pov-camera + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + pov-camera-init-by-other + (-> + (entity-by-name "citadelcam-1") + extra + trans + ) + *citadelcam-sg* + "citadel-bunnies" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (the-as handle gp-1)) 'mask 2048) + (while (handle->process (the-as handle gp-1)) + (set! (-> *target* state-flags) (logand -17 (-> *target* state-flags))) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +(defstate battlecontroller-die (citb-battlecontroller) + :virtual #t + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (let + ((t9-2 + (-> + (the-as + (state battlecontroller) + (find-parent-method citb-battlecontroller 26) + ) + code + ) + ) + ) + (if t9-2 + ((the-as (function none :behavior battlecontroller) t9-2)) + ) + ) + (none) + ) + ) + +(defmethod TODO-RENAME-27 citb-battlecontroller ((obj citb-battlecontroller)) + ((the-as + (function battlecontroller none) + (find-parent-method citb-battlecontroller 27) + ) + obj + ) + (set! (-> obj activate-distance) 143360.0) + 0 + (none) + ) + + + + diff --git a/goal_src/levels/citadel/citb-drop-plat-CIT.gc b/goal_src/levels/citadel/citb-drop-plat-CIT.gc index 6c419a72f3..3904d546cc 100644 --- a/goal_src/levels/citadel/citb-drop-plat-CIT.gc +++ b/goal_src/levels/citadel/citb-drop-plat-CIT.gc @@ -241,8 +241,8 @@ 1024 0 0 - (the-as uint 1) - gp-0 + 1 + (the-as symbol gp-0) ) ) (set! (-> self spin-angle) (* 10.0 (-> self spin-speed) (-> self interp))) @@ -289,8 +289,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the int (* 300.0 (rand-vu-float-range 0.2 0.3))))) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) gp-1) diff --git a/goal_src/levels/common/basebutton.gc b/goal_src/levels/common/basebutton.gc index 3f22cbe2f9..cf9e3ceb7e 100644 --- a/goal_src/levels/common/basebutton.gc +++ b/goal_src/levels/common/basebutton.gc @@ -96,8 +96,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -110,8 +110,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -162,8 +162,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -240,8 +240,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -288,8 +288,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -327,8 +327,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -666,10 +666,10 @@ :size-assert #xc0 :flag-assert #x18005000c0 (:methods - (unknown-state00 () _type_ :state 20) - (dummy-21 () none 21) + (idle () _type_ :state 20) + (active () _type_ :state 21) (use (int level) _type_ :state 22) - (dummy-23 () none 23) + (hidden () _type_ :state 23) ) ) @@ -686,7 +686,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (when (not arg1) (process-release? *target*) - (go-virtual unknown-state00) + (go-virtual idle) ) (let ((s4-0 (new 'stack-no-clear 'event-message-block))) (set! (-> s4-0 from) self) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index 9a9ac398c3..d17127e17c 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -157,8 +157,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -169,8 +169,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -278,19 +278,11 @@ eco-door-event-handler 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) - (sound-play-by-name - (-> self open-sound) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) (dummy-48 (-> self root-override)) (until (ja-done? 0) (let ((a0-9 (-> self skel root-channel 0))) @@ -382,15 +374,7 @@ eco-door-event-handler (suspend) ) ) - (sound-play-by-name - (-> self close-sound) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 1 #t) (until (ja-done? 0) (let ((a0-7 (-> self skel root-channel 0))) (set! (-> a0-7 param 0) 0.0) @@ -410,8 +394,8 @@ eco-door-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (go-virtual door-closed) diff --git a/goal_src/levels/common/battlecontroller.gc b/goal_src/levels/common/battlecontroller.gc index eea74c24a4..5d73e6c97d 100644 --- a/goal_src/levels/common/battlecontroller.gc +++ b/goal_src/levels/common/battlecontroller.gc @@ -645,8 +645,8 @@ battlecontroller-default-event-handler 1024 -2286 0 - (the-as uint 1) - (the-as vector #f) + 1 + #f ) (battlecontroller-battle-end) (battlecontroller-camera-off) diff --git a/goal_src/levels/common/dark-eco-pool.gc b/goal_src/levels/common/dark-eco-pool.gc index 7a02ee748c..5113c0b2c8 100644 --- a/goal_src/levels/common/dark-eco-pool.gc +++ b/goal_src/levels/common/dark-eco-pool.gc @@ -5,7 +5,8 @@ ;; name in dgo: dark-eco-pool ;; dgos: GAME, COMMON, L1 -;; definition of type dark-eco-pool +;; DECOMP BEGINS + (deftype dark-eco-pool (water-anim) () :heap-base #x70 @@ -14,7 +15,7 @@ :flag-assert #x1e007000dc ) -;; definition for symbol ripple-for-misty-dark-eco-pool, type ripple-wave-set + (define ripple-for-misty-dark-eco-pool (new 'static 'ripple-wave-set @@ -31,7 +32,6 @@ ) ) -;; definition for symbol ripple-for-maincave-dark-eco-pool, type ripple-wave-set (define ripple-for-maincave-dark-eco-pool (new 'static 'ripple-wave-set @@ -48,7 +48,6 @@ ) ) -;; definition for symbol ripple-for-finalboss-dark-eco-pool, type ripple-wave-set (define ripple-for-finalboss-dark-eco-pool (new 'static 'ripple-wave-set @@ -65,7 +64,6 @@ ) ) -;; definition for symbol ripple-for-dark-eco-pool, type ripple-wave-set (define ripple-for-dark-eco-pool (new 'static 'ripple-wave-set @@ -82,7 +80,6 @@ ) ) -;; definition for symbol ripple-for-sunken-dark-eco-helix-room, type ripple-wave-set (define ripple-for-sunken-dark-eco-helix-room (new 'static 'ripple-wave-set @@ -99,7 +96,6 @@ ) ) -;; definition for method 25 of type dark-eco-pool (defmethod TODO-RENAME-25 dark-eco-pool ((obj dark-eco-pool)) (let ((t9-0 (method-of-type water-anim TODO-RENAME-25))) (t9-0 obj) @@ -127,7 +123,6 @@ ) ) -;; definition for method 22 of type dark-eco-pool (defmethod TODO-RENAME-22 dark-eco-pool ((obj dark-eco-pool)) (local-vars (v0-3 ripple-wave-set)) (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) @@ -165,7 +160,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-group-id-table* 444) (new 'static 'sparticle-launch-group @@ -182,7 +176,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2020) (new 'static 'sparticle-launcher @@ -209,7 +202,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2021) (new 'static 'sparticle-launcher @@ -224,7 +216,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-group-id-table* 445) (new 'static 'sparticle-launch-group @@ -259,7 +250,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2056) (new 'static 'sparticle-launcher @@ -282,7 +272,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2057) (new 'static 'sparticle-launcher @@ -306,7 +295,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2052) (new 'static 'sparticle-launcher @@ -337,7 +325,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2053) (new 'static 'sparticle-launcher @@ -364,7 +351,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2058) (new 'static 'sparticle-launcher @@ -388,7 +374,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2054) (new 'static 'sparticle-launcher @@ -419,7 +404,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 2055) (new 'static 'sparticle-launcher @@ -446,7 +430,6 @@ ) ) -;; failed to figure out what this is: (defstate water-vol-idle (dark-eco-pool) :virtual #t :trans diff --git a/goal_src/levels/common/plat-button.gc b/goal_src/levels/common/plat-button.gc index 2535856e94..2176356120 100644 --- a/goal_src/levels/common/plat-button.gc +++ b/goal_src/levels/common/plat-button.gc @@ -350,8 +350,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-1 command) (sound-command set-param)) @@ -462,8 +462,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-1 command) (sound-command set-param)) @@ -512,8 +512,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (while #t (if diff --git a/goal_src/levels/common/plat.gc b/goal_src/levels/common/plat.gc index 38dba0d276..2d2c60acde 100644 --- a/goal_src/levels/common/plat.gc +++ b/goal_src/levels/common/plat.gc @@ -312,8 +312,8 @@ 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) (plat-trans) diff --git a/goal_src/levels/common/rigid-body.gc b/goal_src/levels/common/rigid-body.gc index f85e0d2b02..4821be0c1f 100644 --- a/goal_src/levels/common/rigid-body.gc +++ b/goal_src/levels/common/rigid-body.gc @@ -342,7 +342,7 @@ (cm-joint-z meters :offset-assert 88) (idle-distance meters :offset-assert 92) (platform symbol :offset-assert 96) - (sound-name symbol :offset-assert 100) + (sound-name string :offset-assert 100) ) :method-count-assert 9 :size-assert #x68 @@ -804,13 +804,13 @@ ) (if (-> self player-impulse) (sound-play-by-name - (string->sound-name (the-as string (-> self info sound-name))) + (string->sound-name (-> self info sound-name)) (new-sound-id) 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (TODO-RENAME-28 self) diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index 4fb70942ba..992cf1f364 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -543,8 +543,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> gp-0 quad) (-> self collide-info trans quad)) @@ -796,8 +796,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (while #t (let ((a0-3 (-> self skel root-channel 0))) @@ -887,8 +887,8 @@ nav-enemy-default-event-handler 1024 (the int (* 1524.0 f0-2)) 0 - (the-as uint 1) - (-> self collide-info trans) + 1 + (the-as symbol (-> self collide-info trans)) ) ) (none) diff --git a/goal_src/levels/common/ticky.gc b/goal_src/levels/common/ticky.gc index 3d01fc26c5..d645f3c2d7 100644 --- a/goal_src/levels/common/ticky.gc +++ b/goal_src/levels/common/ticky.gc @@ -65,8 +65,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -83,4 +83,4 @@ (- (-> *display* base-frame-counter) (-> obj starting-time)) (the-as int arg0) ) - ) \ No newline at end of file + ) diff --git a/goal_src/levels/common/water-anim.gc b/goal_src/levels/common/water-anim.gc index bfda06aec9..dadc2205b8 100644 --- a/goal_src/levels/common/water-anim.gc +++ b/goal_src/levels/common/water-anim.gc @@ -5,11 +5,12 @@ ;; name in dgo: water-anim ;; dgos: GAME, COMMON, L1, WATER-AN -;; definition of type water-anim +;; DECOMP BEGINS + (deftype water-anim (water-vol) ((ppointer-water-anim (pointer water-anim) :offset 24) (look int32 :offset-assert 212) - (play-ambient-sound? basic :offset-assert 216) + (play-ambient-sound? symbol :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 @@ -17,17 +18,7 @@ :flag-assert #x1e007000dc ) -;; definition for method 3 of type water-anim -(defmethod inspect water-anim ((obj water-anim)) - (let ((t9-0 (method-of-type water-vol inspect))) - (t9-0 obj) - ) - (format #t "~T~Tlook: ~D~%" (-> obj look)) - (format #t "~T~Tplay-ambient-sound?: ~A~%" (-> obj play-ambient-sound?)) - obj - ) -;; failed to figure out what this is: (let ((v1-1 (new 'static 'skeleton-group @@ -44,7 +35,6 @@ (set! *water-anim-sunken-dark-eco-qbert-sg* v1-1) ) -;; failed to figure out what this is: (let ((v1-2 (new 'static 'skeleton-group @@ -61,7 +51,6 @@ (set! *water-anim-sunken-dark-eco-platform-room-sg* v1-2) ) -;; failed to figure out what this is: (let ((v1-3 (new 'static 'skeleton-group @@ -78,7 +67,6 @@ (set! *water-anim-sunken-dark-eco-helix-room-sg* v1-3) ) -;; failed to figure out what this is: (let ((v1-4 (new 'static 'skeleton-group @@ -96,7 +84,6 @@ (set! *water-anim-sunken-big-room-sg* v1-4) ) -;; failed to figure out what this is: (let ((v1-5 (new 'static 'skeleton-group @@ -113,7 +100,6 @@ (set! *water-anim-sunken-first-room-from-entrance-sg* v1-5) ) -;; failed to figure out what this is: (let ((v1-6 (new 'static 'skeleton-group @@ -130,7 +116,6 @@ (set! *water-anim-sunken-qbert-room-sg* v1-6) ) -;; failed to figure out what this is: (let ((v1-7 (new 'static 'skeleton-group @@ -147,7 +132,6 @@ (set! *water-anim-sunken-first-right-branch-sg* v1-7) ) -;; failed to figure out what this is: (let ((v1-8 (new 'static 'skeleton-group @@ -164,7 +148,6 @@ (set! *water-anim-sunken-circular-with-bullys-sg* v1-8) ) -;; failed to figure out what this is: (let ((v1-9 (new 'static 'skeleton-group @@ -181,7 +164,6 @@ (set! *water-anim-sunken-hall-with-one-whirlpool-sg* v1-9) ) -;; failed to figure out what this is: (let ((v1-10 (new 'static 'skeleton-group @@ -198,7 +180,6 @@ (set! *water-anim-sunken-hall-with-three-whirlpools-sg* v1-10) ) -;; failed to figure out what this is: (let ((v1-11 (new 'static 'skeleton-group @@ -215,7 +196,6 @@ (set! *water-anim-sunken-start-of-helix-slide-sg* v1-11) ) -;; failed to figure out what this is: (let ((v1-12 (new 'static 'skeleton-group @@ -232,7 +212,6 @@ (set! *water-anim-sunken-room-above-exit-chamber-sg* v1-12) ) -;; failed to figure out what this is: (let ((v1-13 (new 'static 'skeleton-group @@ -250,7 +229,6 @@ (set! *water-anim-sunken-hall-before-big-room-sg* v1-13) ) -;; failed to figure out what this is: (let ((v1-14 (new 'static 'skeleton-group @@ -267,7 +245,6 @@ (set! *water-anim-sunken-short-piece-sg* v1-14) ) -;; failed to figure out what this is: (let ((v1-15 (new 'static 'skeleton-group @@ -284,7 +261,6 @@ (set! *water-anim-sunken-big-room-upper-water-sg* v1-15) ) -;; failed to figure out what this is: (let ((v1-16 (new 'static 'skeleton-group @@ -301,7 +277,6 @@ (set! *water-anim-maincave-center-pool-sg* v1-16) ) -;; failed to figure out what this is: (let ((v1-17 (new 'static 'skeleton-group @@ -319,7 +294,6 @@ (set! *water-anim-maincave-lower-right-pool-sg* v1-17) ) -;; failed to figure out what this is: (let ((v1-18 (new 'static 'skeleton-group @@ -336,7 +310,6 @@ (set! *water-anim-maincave-mid-right-pool-sg* v1-18) ) -;; failed to figure out what this is: (let ((v1-19 (new 'static 'skeleton-group @@ -354,7 +327,6 @@ (set! *water-anim-maincave-lower-left-pool-sg* v1-19) ) -;; failed to figure out what this is: (let ((v1-20 (new 'static 'skeleton-group @@ -371,7 +343,6 @@ (set! *water-anim-maincave-mid-left-pool-sg* v1-20) ) -;; failed to figure out what this is: (let ((v1-21 (new 'static 'skeleton-group @@ -389,7 +360,6 @@ (set! *water-anim-maincave-water-with-crystal-sg* v1-21) ) -;; failed to figure out what this is: (let ((v1-22 (new 'static 'skeleton-group @@ -409,7 +379,6 @@ (set! *water-anim-robocave-main-pool-sg* v1-22) ) -;; failed to figure out what this is: (let ((v1-23 (new 'static 'skeleton-group @@ -427,7 +396,6 @@ (set! *water-anim-misty-mud-by-arena-sg* v1-23) ) -;; failed to figure out what this is: (let ((v1-24 (new 'static 'skeleton-group @@ -444,7 +412,6 @@ (set! *water-anim-misty-mud-above-skeleton-sg* v1-24) ) -;; failed to figure out what this is: (let ((v1-25 (new 'static 'skeleton-group @@ -462,7 +429,6 @@ (set! *water-anim-misty-mud-behind-skeleton-sg* v1-25) ) -;; failed to figure out what this is: (let ((v1-26 (new 'static 'skeleton-group @@ -479,7 +445,6 @@ (set! *water-anim-misty-mud-above-skull-back-sg* v1-26) ) -;; failed to figure out what this is: (let ((v1-27 (new 'static 'skeleton-group @@ -496,7 +461,6 @@ (set! *water-anim-misty-mud-above-skull-front-sg* v1-27) ) -;; failed to figure out what this is: (let ((v1-28 (new 'static 'skeleton-group @@ -513,7 +477,6 @@ (set! *water-anim-misty-mud-other-near-skull-sg* v1-28) ) -;; failed to figure out what this is: (let ((v1-29 (new 'static 'skeleton-group @@ -530,7 +493,6 @@ (set! *water-anim-misty-mud-near-skull-sg* v1-29) ) -;; failed to figure out what this is: (let ((v1-30 (new 'static 'skeleton-group @@ -547,7 +509,6 @@ (set! *water-anim-misty-mud-under-spine-sg* v1-30) ) -;; failed to figure out what this is: (let ((v1-31 (new 'static 'skeleton-group @@ -564,7 +525,6 @@ (set! *water-anim-misty-mud-by-dock-sg* v1-31) ) -;; failed to figure out what this is: (let ((v1-32 (new 'static 'skeleton-group @@ -582,7 +542,6 @@ (set! *water-anim-misty-mud-island-near-dock-sg* v1-32) ) -;; failed to figure out what this is: (let ((v1-33 (new 'static 'skeleton-group @@ -599,7 +558,6 @@ (set! *water-anim-misty-mud-lonely-island-sg* v1-33) ) -;; failed to figure out what this is: (let ((v1-34 (new 'static 'skeleton-group @@ -616,7 +574,6 @@ (set! *water-anim-misty-dark-eco-pool-sg* v1-34) ) -;; failed to figure out what this is: (let ((v1-35 (new 'static 'skeleton-group @@ -633,7 +590,6 @@ (set! *water-anim-ogre-lava-sg* v1-35) ) -;; failed to figure out what this is: (let ((v1-36 (new 'static 'skeleton-group @@ -653,7 +609,6 @@ (set! *water-anim-jungle-river-sg* v1-36) ) -;; failed to figure out what this is: (let ((v1-37 (new 'static 'skeleton-group @@ -674,7 +629,6 @@ (set! *water-anim-village3-lava-sg* v1-37) ) -;; failed to figure out what this is: (let ((v1-38 (new 'static 'skeleton-group @@ -692,7 +646,6 @@ (set! *water-anim-training-lake-sg* v1-38) ) -;; failed to figure out what this is: (let ((v1-39 (new 'static 'skeleton-group @@ -709,7 +662,6 @@ (set! *water-anim-darkcave-water-with-crystal-sg* v1-39) ) -;; failed to figure out what this is: (let ((v1-40 (new 'static 'skeleton-group @@ -727,7 +679,6 @@ (set! *water-anim-rolling-water-back-sg* v1-40) ) -;; failed to figure out what this is: (let ((v1-41 (new 'static 'skeleton-group @@ -744,7 +695,6 @@ (set! *water-anim-rolling-water-front-sg* v1-41) ) -;; failed to figure out what this is: (let ((v1-42 (new 'static 'skeleton-group @@ -761,7 +711,6 @@ (set! *water-anim-finalboss-dark-eco-pool-sg* v1-42) ) -;; failed to figure out what this is: (let ((v1-43 (new 'static 'skeleton-group @@ -779,7 +728,6 @@ (set! *water-anim-lavatube-energy-lava-sg* v1-43) ) -;; failed to figure out what this is: (let ((v1-44 (new 'static 'skeleton-group @@ -797,7 +745,6 @@ (set! *water-anim-village1-rice-paddy-sg* v1-44) ) -;; failed to figure out what this is: (let ((v1-45 (new 'static 'skeleton-group @@ -814,7 +761,6 @@ (set! *water-anim-village1-fountain-sg* v1-45) ) -;; failed to figure out what this is: (let ((v1-46 (new 'static 'skeleton-group @@ -831,7 +777,6 @@ (set! *water-anim-village1-rice-paddy-mid-sg* v1-46) ) -;; failed to figure out what this is: (let ((v1-47 (new 'static 'skeleton-group @@ -849,7 +794,6 @@ (set! *water-anim-village1-rice-paddy-top-sg* v1-47) ) -;; failed to figure out what this is: (let ((v1-48 (new 'static 'skeleton-group @@ -866,7 +810,6 @@ (set! *water-anim-village2-bucket-sg* v1-48) ) -;; definition of type water-anim-look (deftype water-anim-look (structure) ((skel-group symbol :offset-assert 0) (anim int32 :offset-assert 4) @@ -877,16 +820,7 @@ :flag-assert #x90000000c ) -;; definition for method 3 of type water-anim-look -(defmethod inspect water-anim-look ((obj water-anim-look)) - (format #t "[~8x] ~A~%" obj 'water-anim-look) - (format #t "~Tskel-group: ~A~%" (-> obj skel-group)) - (format #t "~Tanim: ~D~%" (-> obj anim)) - (format #t "~Tambient-sound-spec: ~A~%" (-> obj ambient-sound-spec)) - obj - ) -;; definition for symbol *water-anim-look*, type (array water-anim-look) (define *water-anim-look* (the-as (array water-anim-look) @@ -1371,7 +1305,6 @@ ) ) -;; failed to figure out what this is: (defstate water-vol-idle (water-anim) :virtual #t :event @@ -1423,20 +1356,14 @@ ) ) -;; definition for method 28 of type water-anim (defmethod get-ripple-height water-anim ((obj water-anim) (arg0 vector)) (ripple-find-height obj 0 arg0) ) -;; definition for method 24 of type water-anim -;; INFO: Return type mismatch symbol vs none. (defmethod dummy-24 water-anim () (none) ) -;; definition for method 25 of type water-anim -;; INFO: Return type mismatch quaternion vs object. -;; Used lq/sq (defmethod TODO-RENAME-25 water-anim ((obj water-anim)) (local-vars (sv-16 res-tag)) (set! (-> obj play-ambient-sound?) #t) @@ -1474,8 +1401,6 @@ ) ) -;; definition for method 22 of type water-anim -;; INFO: Return type mismatch none vs ripple-wave-set. (defmethod TODO-RENAME-22 water-anim ((obj water-anim)) (let ((s5-0 (-> obj look))) (if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length))) diff --git a/goal_src/levels/darkcave/darkcave-obs.gc b/goal_src/levels/darkcave/darkcave-obs.gc index c946b7bfcc..51238fe156 100644 --- a/goal_src/levels/darkcave/darkcave-obs.gc +++ b/goal_src/levels/darkcave/darkcave-obs.gc @@ -5,33 +5,357 @@ ;; name in dgo: darkcave-obs ;; dgos: DAR, L1 -;; TODO - for cavecrystal-light +(define-extern *cavecrystal-sg* skeleton-group) + +(declare-type cavecrystal process-drawable) + +(define-extern cavecrystal-idle (state cavecrystal)) +(define-extern cavecrystal-active (state cavecrystal)) + +;; DECOMP BEGINS + (deftype cavecrystal (process-drawable) - ((root-override collide-shape :score 100 :offset 112) - (is-master? symbol :offset-assert 176) - (crystal-id int32 :offset-assert 180) - (glow-u float :offset-assert 184) - (glow-wf-period int32 :offset-assert 188) - (glow-wf-offset int32 :offset-assert 192) - (prev-compute-glow-time uint64 :offset-assert 200) - (start-fade-time uint64 :offset-assert 208) - (end-fade-time uint64 :offset-assert 216) - (activated-time uint64 :offset-assert 224) - (last-updated-user-lighting uint64 :offset-assert 232) - (player-attack-id uint64 :offset-assert 240) - (on-color-mult vector :inline :offset-assert 256) - (on-color-emissive vector :inline :offset-assert 272) - (off-color-mult vector :inline :offset-assert 288) - (off-color-emissive vector :inline :offset-assert 304) + ((root-override collide-shape :offset 112) + (is-master? symbol :offset-assert 176) + (crystal-id int32 :offset-assert 180) + (glow-u float :offset-assert 184) + (glow-wf-period int32 :offset-assert 188) + (glow-wf-offset int32 :offset-assert 192) + (prev-compute-glow-time uint64 :offset-assert 200) + (start-fade-time uint64 :offset-assert 208) + (end-fade-time uint64 :offset-assert 216) + (activated-time uint64 :offset-assert 224) + (last-updated-user-lighting uint64 :offset-assert 232) + (player-attack-id uint64 :offset-assert 240) + (on-color-mult vector :inline :offset-assert 256) + (on-color-emissive vector :inline :offset-assert 272) + (off-color-mult vector :inline :offset-assert 288) + (off-color-emissive vector :inline :offset-assert 304) ) + :heap-base #xd0 :method-count-assert 22 :size-assert #x140 - :heap-base #xd0 :flag-assert #x1600d00140 (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) + (update-connected-crystals! (_type_) none 20) + (compute-glow (_type_) float 21) ) ) -;; decomp begins + +(defskelgroup *cavecrystal-sg* cavecrystal + 0 + -1 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 4.699999809265137 0 5.400000095367432) + :longest-edge (meters 0) + ) + +(defmethod update-connected-crystals! cavecrystal ((obj cavecrystal)) + (when (-> obj is-master?) + (let ((v1-2 (-> *display* base-frame-counter))) + (when (!= (-> obj last-updated-user-lighting) v1-2) + (set! (-> obj last-updated-user-lighting) (the-as uint v1-2)) + (execute-connections *cavecrystal-light-control*) + ) + ) + ) + (none) + ) + +(defmethod compute-glow cavecrystal ((obj cavecrystal)) + (set! + (-> obj prev-compute-glow-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (let* + ((gp-1 + (max + 1 + (the-as + int + (+ + (- 1 (the-as int (-> obj activated-time))) + (-> *display* game-frame-counter) + ) + ) + ) + ) + (f0-2 + (/ + (the + float + (mod + (+ (-> *display* base-frame-counter) (-> obj glow-wf-offset)) + (-> obj glow-wf-period) + ) + ) + (the float (-> obj glow-wf-period)) + ) + ) + (f30-1 (* 0.1 (cos (* 65536.0 f0-2)))) + ) + (cond + ((>= 20 (the-as int gp-1)) + (let ((v1-11 (* 0.05 (the float gp-1)))) + (fmax 0.0 (fmin 2.0 (+ (* 2.0 v1-11) (* v1-11 f30-1)))) + ) + ) + ((>= 180 (the-as int gp-1)) + (let ((a2-0 (* 0.00625 (the float (+ gp-1 -20))))) + (fmin 2.0 (+ (lerp 2.0 1.0 a2-0) f30-1)) + ) + ) + ((>= (the-as int (-> obj start-fade-time)) (the-as int gp-1)) + (+ 1.0 f30-1) + ) + (else + (let + ((v1-20 + (fmin 1.0 (* 0.004761905 (the float (- gp-1 (-> obj start-fade-time))))) + ) + ) + (fmax 0.0 (- (+ 1.0 (* (- 1.0 v1-20) f30-1)) v1-20)) + ) + ) + ) + ) + ) + +(defstate cavecrystal-idle (cavecrystal) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (go cavecrystal-active) + ) + ) + ) + :trans + (behavior () + (if + (and + *target* + (>= + 40960.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (level-hint-spawn + (game-text-id darkcave-light-crystal-hint) + "sksp0333" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (update-connected-crystals! self) + (none) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +(defstate cavecrystal-active (cavecrystal) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'attack) + (let ((v1-1 (-> arg3 param 2))) + (cond + ((!= v1-1 (-> self player-attack-id)) + (set! (-> self player-attack-id) v1-1) + (set! + (-> self activated-time) + (the-as uint (-> *display* game-frame-counter)) + ) + #t + ) + (else + #f + ) + ) + ) + ) + ) + ) + ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! + (-> self activated-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (set! + (-> self prev-compute-glow-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (none) + ) + :exit + (behavior () + (stop! (-> self sound)) + (if (not (-> self is-master?)) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :trans + (behavior () + (let ((f30-0 (compute-glow self))) + (set! (-> self glow-u) f30-0) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f28-0 1.993) + ) + (let ((s5-0 (-> self draw color-mult))) + (vector-! gp-0 (-> self on-color-mult) (-> self off-color-mult)) + (vector+*! s5-0 (-> self off-color-mult) gp-0 f30-0) + (set! (-> s5-0 x) (fmax 0.0 (fmin (-> s5-0 x) f28-0))) + (set! (-> s5-0 y) (fmax 0.0 (fmin (-> s5-0 y) f28-0))) + (set! (-> s5-0 z) (fmax 0.0 (fmin (-> s5-0 z) f28-0))) + (set! (-> s5-0 w) 1.0) + ) + (let ((s5-1 (-> self draw color-emissive))) + (vector-! gp-0 (-> self on-color-emissive) (-> self off-color-emissive)) + (vector+*! s5-1 (-> self off-color-emissive) gp-0 f30-0) + (set! (-> s5-1 x) (fmax 0.0 (fmin (-> s5-1 x) f28-0))) + (set! (-> s5-1 y) (fmax 0.0 (fmin (-> s5-1 y) f28-0))) + (set! (-> s5-1 z) (fmax 0.0 (fmin (-> s5-1 z) f28-0))) + (set! (-> s5-1 w) 0.0) + ) + ) + (TODO-RENAME-9 + *cavecrystal-light-control* + (-> self crystal-id) + (-> self glow-u) + self + ) + (update-connected-crystals! self) + (when (>= 0.0 f30-0) + (level-hint-spawn + (game-text-id darkcave-light-crystal-low-light-hint) + "sksp0332" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (go cavecrystal-idle) + ) + ) + (update! (-> self sound)) + (none) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +(defmethod deactivate cavecrystal ((obj cavecrystal)) + (if (nonzero? (-> obj sound)) + (stop! (-> obj sound)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +(defmethod copy-defaults! cavecrystal ((obj cavecrystal) (arg0 res-lump)) + (set! (-> obj glow-u) 0.0) + (set! (-> obj player-attack-id) (the-as uint 0)) + (set! (-> obj last-updated-user-lighting) (the-as uint 0)) + (set-vector! (-> obj off-color-mult) 0.0 0.0 0.0 1.0) + (set-vector! (-> obj off-color-emissive) 0.0 0.0 0.0 0.0) + (set-vector! (-> obj on-color-mult) 1.0 1.0 1.0 1.0) + (set-vector! (-> obj on-color-emissive) 0.0 0.0 0.0 0.0) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) 4915.2) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj crystal-id) (actor-count-before (-> obj link))) + (set! (-> obj is-master?) (= (-> obj crystal-id) 3)) + (set! (-> obj glow-wf-period) (rand-vu-int-range 225 375)) + (set! (-> obj glow-wf-offset) (rand-vu-int-range 0 300)) + (if (-> obj is-master?) + (logclear! (-> obj mask) (process-mask actor-pause)) + ) + (set! + (-> obj start-fade-time) + (the-as + uint + (the int (* 300.0 (res-lump-float (-> obj entity) 'timeout :default 8.0))) + ) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *cavecrystal-sg* '()) + (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) + (set! (-> obj draw color-mult quad) (-> obj off-color-mult quad)) + (set! (-> obj draw color-emissive quad) (-> obj off-color-emissive quad)) + (ja-channel-push! 1 0) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (ja-post) + (dummy-47 (-> obj root-override)) + (TODO-RENAME-9 *cavecrystal-light-control* (-> obj crystal-id) 0.0 obj) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "crystal-on") + :volume #x400 + :fo-max 80 + ) + (-> obj root-override trans) + ) + ) + (go cavecrystal-idle) + (none) + ) + + + + diff --git a/goal_src/levels/finalboss/final-door.gc b/goal_src/levels/finalboss/final-door.gc index 5feda75863..841ebaafca 100644 --- a/goal_src/levels/finalboss/final-door.gc +++ b/goal_src/levels/finalboss/final-door.gc @@ -358,8 +358,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (new 'stack 'trajectory))) (set! (-> self base y) (-> self jump-pos y)) @@ -406,8 +406,8 @@ 1024 3048 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-3 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-3 diff --git a/goal_src/levels/finalboss/green-eco-lurker.gc b/goal_src/levels/finalboss/green-eco-lurker.gc index f58d386c94..a87465ea55 100644 --- a/goal_src/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/levels/finalboss/green-eco-lurker.gc @@ -662,8 +662,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -0.5 0.5))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (dummy-53 self) @@ -679,8 +679,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (cond ((zero? (nav-enemy-rnd-int-count 2)) @@ -799,8 +799,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((v1-4 (-> self draw shadow-ctrl))) (let ((a0-4 v1-4)) @@ -1082,8 +1082,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) (let ((v1-14 (-> self draw shadow-ctrl))) diff --git a/goal_src/levels/finalboss/robotboss-weapon.gc b/goal_src/levels/finalboss/robotboss-weapon.gc index 24540b42a7..e35613830e 100644 --- a/goal_src/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/levels/finalboss/robotboss-weapon.gc @@ -265,8 +265,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #f) + 1 + #f ) (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) (send-event (ppointer->process (-> self parent)) 'flash 255.0) @@ -427,8 +427,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -459,8 +459,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-2 (-> self skel root-channel 0))) (set! @@ -1050,8 +1050,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self draw status) (logand -3 (-> self draw status))) (quaternion-identity! (-> self root quat)) diff --git a/goal_src/levels/finalboss/robotboss.gc b/goal_src/levels/finalboss/robotboss.gc index 59671210d7..57381df18f 100644 --- a/goal_src/levels/finalboss/robotboss.gc +++ b/goal_src/levels/finalboss/robotboss.gc @@ -1383,8 +1383,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -2771,8 +2771,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -3972,8 +3972,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -5263,8 +5263,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self blue-smoke) #t) (let ((gp-1 (new 'stack-no-clear 'vector))) diff --git a/goal_src/levels/firecanyon/firecanyon-obs.gc b/goal_src/levels/firecanyon/firecanyon-obs.gc index b00d4d7150..b015a09edb 100644 --- a/goal_src/levels/firecanyon/firecanyon-obs.gc +++ b/goal_src/levels/firecanyon/firecanyon-obs.gc @@ -5,3 +5,928 @@ ;; name in dgo: firecanyon-obs ;; dgos: L1, FIC, OGR +(define-extern *balloon-sg* skeleton-group) +(define-extern *crate-darkeco-cluster-sg* skeleton-group) +(define-extern *spike-sg* skeleton-group) + +(declare-type spike process-drawable) +(declare-type balloon process-drawable) + +(define-extern spike-down (state spike)) ;; unknown type +(define-extern spike-idle (state spike)) ;; unknown type +(define-extern spike-up (state spike)) ;; unknown type +(define-extern balloon-idle (state balloon)) ;; unknown type +(define-extern balloon-popping (state balloon)) ;; unknown type + +;; DECOMP BEGINS + +(deftype balloon (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(set! + (-> *part-group-id-table* 227) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x5dc + :name "group-balloon" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1006) + (sp-item 1007) + (sp-item 1008) + ) + :bounds (new 'static 'sphere :w 61440.0) + ) + ) + +(set! + (-> *part-id-table* 1007) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 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 3.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1008) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-flt spt-y (meters 2.0)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.08) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 75) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 1.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1006) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 12.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 80.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -0.08) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(defstate balloon-popping (balloon) + :code + (behavior () + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "cool-balloon") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 227) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate balloon-idle (balloon) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (send-event arg0 'heat -10.0) + (go balloon-popping) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior balloon) ja-post) + ) + +(defmethod copy-defaults! balloon ((obj balloon) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core offense) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *balloon-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 227) obj) + ) + (go balloon-idle) + (none) + ) + +(deftype spike (process-drawable) + ((root-override collide-shape :offset 112) + (num-alts int32 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + + +(defskelgroup *spike-sg* spike + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 8 0 10.199999809265137) + :longest-edge (meters 5) + ) + +(defstate spike-up (spike) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (= v1-0 'go-spike-up) + #t + ) + ) + ) + ) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 (/ (-> self num-alts) 2)) + (gp-0 #t) + ) + (while (< s5-0 (+ (-> self num-alts) -1)) + (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if + (and + v1-2 + (-> v1-2 extra process) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function (if v1-2 + (-> v1-2 extra process) + ) + a1-1 + ) + ) + ) + ) + (set! gp-0 #f) + ) + ) + (+! s5-0 1) + ) + (when gp-0 + (set! (-> self num-alts) 0) + 0 + ) + ) + ) + (none) + ) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (transform-post) + (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! + ) + ) + ) + (while #t + (suspend) + ) + (none) + ) + ) + +(defstate spike-down (spike) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'go-spike-up) + (go spike-up) + #t + ) + ) + ) + ) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 0) + (gp-0 #t) + ) + (while (< s5-0 (/ (-> self num-alts) 2)) + (let ((v1-1 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if + (and + v1-1 + (-> v1-1 extra process) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function (if v1-1 + (-> v1-1 extra process) + ) + a1-1 + ) + ) + ) + ) + (set! gp-0 #f) + ) + ) + (+! s5-0 1) + ) + (when gp-0 + (set! (-> self num-alts) 0) + 0 + ) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (suspend) + ) + (none) + ) + ) + +(defstate spike-idle (spike) + :trans + (behavior () + (when (and *target* (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'mode)) + (= (send-event-function *target* a1-0) 'racer) + ) + (< + (vector-vector-distance (-> self root-override trans) (target-pos 0)) + 225280.0 + ) + ) + (sound-play-by-name + (static-sound-name "magma-rock") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((v1-8 (entity-actor-count (-> self entity) 'alt-actor))) + 0 + (cond + ((>= 1 v1-8) + (go spike-up) + ) + ((let* ((v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-12 (the-as number (logior #x3f800000 v1-11))) + ) + (< (+ -1.0 (the-as float v1-12)) 0.5) + ) + (go spike-down) + ) + (else + (go spike-up) + ) + ) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (suspend) + ) + (none) + ) + ) + +(defmethod copy-defaults! spike ((obj spike) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 3) + (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 1)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 1)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 3) + (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *spike-sg* '()) + (set! (-> obj draw origin-joint-index) (the-as uint 3)) + (set! (-> obj num-alts) (entity-actor-count (-> obj entity) 'alt-actor)) + (if (zero? (-> obj num-alts)) + (go spike-down) + (go spike-idle) + ) + (none) + ) + +(defskelgroup *crate-darkeco-cluster-sg* crate-darkeco-cluster + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 1.600000023841858 0 3.299999952316284) + :longest-edge (meters 0) + ) + +(deftype crate-darkeco-cluster (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) + + +(set! + (-> *part-group-id-table* 228) + (new 'static 'sparticle-launch-group + :length 69 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-dark-cluster-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 69 + (sp-item 2100 :period 600 :length 5) + (sp-item 2101 :period 600 :length 40) + (sp-item 2102 :period 600 :length 20) + (sp-item 2103 :period 600 :length 20) + (sp-item 2104 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +(set! + (-> *part-id-table* 2104) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2101) + (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 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2105) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2105) + (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* 2103) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.04)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2100) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2102) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-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-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +(defstate die (crate-darkeco-cluster) + :virtual #t + :code + (behavior () + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "dcrate-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 228) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate idle (crate-darkeco-cluster) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack 'touch) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (let ((a2-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-2 mode) 'darkeco) + (set! (-> a1-3 param 1) (the-as uint a2-2)) + ) + (send-event-function arg0 a1-3) + ) + (go-virtual die) + ) + ) + ) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +(defmethod + copy-defaults! + crate-darkeco-cluster + ((obj crate-darkeco-cluster) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *crate-darkeco-cluster-sg* '()) + (go (method-of-object obj idle)) + (none) + ) + + + + diff --git a/goal_src/levels/jungle/bouncer.gc b/goal_src/levels/jungle/bouncer.gc index 8a368b77d6..41cc83173b 100644 --- a/goal_src/levels/jungle/bouncer.gc +++ b/goal_src/levels/jungle/bouncer.gc @@ -52,8 +52,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go bouncer-fire) ) diff --git a/goal_src/levels/jungle/fisher-JUN.gc b/goal_src/levels/jungle/fisher-JUN.gc index 2cb89a14a9..5cb340dab4 100644 --- a/goal_src/levels/jungle/fisher-JUN.gc +++ b/goal_src/levels/jungle/fisher-JUN.gc @@ -1084,8 +1084,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (ambient-hint-spawn "sksp0a42" @@ -1125,8 +1125,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 5) ) @@ -1160,8 +1160,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 1) ) @@ -2054,8 +2054,8 @@ 716 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (fisher-spawn-ambient) (let ((s5-1 (get-process *default-dead-pool* fisher-fish #x4000))) @@ -2125,8 +2125,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! v0-2 (+ (-> self missed) (-> arg3 param 0))) (set! (-> self missed) (the-as int v0-2)) diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index 86c2bce91d..f1ff323f06 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -5,3 +5,2121 @@ ;; name in dgo: jungle-obs ;; dgos: JUN, JUNGLE, L1 +(define-extern *jngpusher-sg* skeleton-group) +(define-extern *sidedoor-sg* skeleton-group) +(define-extern *maindoor-sg* skeleton-group) +(define-extern *precurbridge-sg* skeleton-group) +(define-extern *junglecam-sg* skeleton-group) +(define-extern *accordian-sg* skeleton-group) +(define-extern *lurkerm-piston-sg* skeleton-group) +(define-extern *lurkerm-short-sail-sg* skeleton-group) +(define-extern *lurkerm-tall-sail-sg* skeleton-group) +(define-extern *towertop-sg* skeleton-group) +(define-extern *logtrap-sg* skeleton-group) +(define-extern *med-res-firecanyon-sg* skeleton-group) +(define-extern *jungle-camera-sg* skeleton-group) + +(declare-type towertop process-drawable) +(declare-type lurkerm-tall-sail process-drawable) +(declare-type lurkerm-short-sail process-drawable) +(declare-type lurkerm-piston process-drawable) +(declare-type accordian process-drawable) +(declare-type precurbridge process-drawable) +(declare-type precurbridge process-drawable) +(declare-type maindoor process-drawable) +(declare-type jngpusher process-drawable) + +(define-extern towertop-idle (state towertop)) ;; unknown type +(define-extern lurkerm-tall-sail-idle (state lurkerm-tall-sail)) ;; unknown type +(define-extern lurkerm-short-sail-idle (state lurkerm-short-sail)) ;; unknown type +(define-extern lurkerm-piston-idle (state lurkerm-piston)) ;; unknown type +(define-extern accordian-idle (state accordian)) ;; unknown type +(define-extern precurbridge-activate (state precurbridge)) ;; unknown type +(define-extern precurbridge-active (state symbol precurbridge)) ;; unknown type +(define-extern precurbridge-idle (state precurbridge)) ;; unknown type +(define-extern maindoor-open (state symbol maindoor)) ;; unknown type +(define-extern maindoor-closed (state symbol maindoor)) ;; unknown type +(define-extern jngpusher-idle (state jngpusher)) ;; unknown type + +;; DECOMP BEGINS + +(defskelgroup *med-res-firecanyon-sg* medres-firecanyon + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -200 0 -440 530) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *jungle-camera-sg* jungle-camera + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + :texture-level 2 + ) + +(deftype logtrap (process-drawable) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + + +(defskelgroup *logtrap-sg* logtrap + 0 + 4 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 8 0 13) + :longest-edge (meters 6) + :shadow 3 + ) + +(defstate idle (logtrap) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if (or (= arg2 'touch) (= arg2 'attack)) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + 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 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (when (logtest? (-> self draw status) 8) + (cond + ((> (-> self draw cur-lod) 0) + (ja-post) + ) + (else + (transform-post) + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> self root-override root-prim prim-core)) + #f + self + ) + ) + ) + ) + ) + (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! + ) + ) + ) + ) + (none) + ) + ) + +(defmethod copy-defaults! logtrap ((obj logtrap) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask enemy) (-> 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) nothing) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 transform-index) 6) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *logtrap-sg* '()) + (set! + (-> obj draw shadow-ctrl) + (new 'process 'shadow-control -5734.4 0.0 614400.0 (the-as float 1) 163840.0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (dummy-47 (-> obj root-override)) + (go (method-of-object obj idle)) + (none) + ) + +(deftype towertop (process-drawable) + ((root-override trsq :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defskelgroup *towertop-sg* towertop + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 30) + :longest-edge (meters 0) + ) + +(defstate towertop-idle (towertop) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 0.4) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + 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) 0.4) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior towertop) ja-post) + ) + +(defmethod copy-defaults! towertop ((obj towertop) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *towertop-sg* '()) + (go towertop-idle) + (none) + ) + +(deftype lurkerm-tall-sail (process-drawable) + ((root-override collide-shape-moving :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + + +(defskelgroup *lurkerm-tall-sail-sg* lurkerm-tall-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 5 0 7) + :longest-edge (meters 4) + ) + +(defstate lurkerm-tall-sail-idle (lurkerm-tall-sail) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-tall-sail) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (* 0.5 (-> self speed))) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-local-y! + (-> self root-override quat) + (-> self root-override quat) + (* 12743.111 (-> *display* seconds-per-frame) (-> self speed)) + ) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) (* 0.5 (-> self speed))) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-tall-sail) rider-post) + ) + +(defmethod + copy-defaults! + lurkerm-tall-sail + ((obj lurkerm-tall-sail) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *lurkerm-tall-sail-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-tall-sail-idle) + (none) + ) + +(deftype lurkerm-short-sail (process-drawable) + ((root-override collide-shape-moving :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + + +(defskelgroup *lurkerm-short-sail-sg* lurkerm-short-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 5 0 9) + :longest-edge (meters 0) + ) + +(defstate lurkerm-short-sail-idle (lurkerm-short-sail) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-short-sail) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (* 0.5 (-> self speed))) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-local-y! + (-> self root-override quat) + (-> self root-override quat) + (* -12743.111 (-> *display* seconds-per-frame) (-> self speed)) + ) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) (* 0.5 (-> self speed))) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-short-sail) rider-post) + ) + +(defmethod + copy-defaults! + lurkerm-short-sail + ((obj lurkerm-short-sail) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 3) + (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *lurkerm-short-sail-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-short-sail-idle) + (none) + ) + +(deftype lurkerm-piston (process-drawable) + ((root-override collide-shape-moving :offset 112) + (sync sync-info :inline :offset-assert 176) + (base vector :inline :offset-assert 192) + (height vector :inline :offset-assert 208) + (speed float :offset-assert 224) + (alt-actor entity-actor :offset-assert 228) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xe8 + :flag-assert #x14008000e8 + ) + + +(defskelgroup *lurkerm-piston-sg* lurkerm-piston + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 6) + :longest-edge (meters 0) + ) + +(defstate lurkerm-piston-idle (lurkerm-piston) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-piston) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (-> self speed)) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self base quad)) + (+! + (-> gp-0 y) + (* + (get-current-value-with-mirror (-> self sync) (-> self height y)) + (-> self speed) + ) + ) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) (-> self speed)) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-piston) rider-post) + ) + +(defmethod copy-defaults! lurkerm-piston ((obj lurkerm-piston) (arg0 res-lump)) + (local-vars (sv-16 res-tag) (sv-32 res-tag)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *lurkerm-piston-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (let ((f30-0 (-> obj base y))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-32 (res-lump-data arg0 'height-info pointer :tag-ptr (& sv-16)))) + (set! + (-> obj base y) + (+ f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) + (-> (the-as (pointer float) v1-32)) + 0.0 + ) + ) + ) + ) + ) + (let ((s4-1 (-> obj height))) + (set! (-> s4-1 x) 0.0) + (set! sv-32 (new 'static 'res-tag)) + (let + ((v1-35 + (res-lump-data arg0 'height-info (pointer float) :tag-ptr (& sv-32)) + ) + ) + (set! (-> s4-1 y) (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) + (-> v1-35 1) + 20480.0 + ) + ) + ) + (set! (-> s4-1 z) 0.0) + (set! (-> s4-1 w) 1.0) + ) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-piston-idle) + (none) + ) + +(deftype accordian (process-drawable) + ((speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + + +(defskelgroup *accordian-sg* accordian + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem -7 0 23 25) + :longest-edge (meters 4) + ) + +(defstate accordian-idle (accordian) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-post) + (while #t + (suspend) + (when (logtest? (-> self draw status) 8) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) (-> self speed)) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-post) + ) + ) + (none) + ) + ) + +(defmethod copy-defaults! accordian ((obj accordian) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *accordian-sg* '()) + (set! (-> obj root pause-adjust-distance) 204800.0) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go accordian-idle) + (none) + ) + +(defskelgroup *junglecam-sg* junglecam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 80) + :longest-edge (meters 0) + ) + +(deftype junglecam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + + +(deftype precurbridgecam (pov-camera) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + + +(defstate pov-camera-playing (precurbridgecam) + :virtual #t + :code + (behavior () + (ambient-hint-spawn "gamcam30" (the-as vector #f) *entity-pool* 'camera) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + ) + (let ((gp-0 (-> self skel root-channel 0))) + (set! + (-> gp-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + (set! (-> gp-0 param 0) (ja-aframe 0.0 0)) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 8)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 0.0 0)) + (set! (-> gp-1 param 1) 1.0) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (send-event (ppointer->process (-> self parent)) 'go) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 1.0) + (joint-control-channel-group! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (while (not (ja-done? 0)) + (suspend) + (ja-eval) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +(deftype precurbridge-span (structure) + () + :method-count-assert 9 + :size-assert #x0 + :flag-assert #x900000000 + ) + + +(deftype precurbridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (smush smush-control :inline :offset-assert 176) + (base vector :inline :offset-assert 208) + (activation-point vector :inline :offset-assert 224) + (span-array precurbridge-span 8 :offset-assert 240) + ) + :heap-base #xa0 + :method-count-assert 20 + :size-assert #x110 + :flag-assert #x1400a00110 + ) + + +(defskelgroup *precurbridge-sg* precurbridge + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 40) + :longest-edge (meters 3.5999999046325684) + ) + +(defstate precurbridge-idle (precurbridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('go) + (go precurbridge-activate) + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (while #t + (when + (and + *target* + (< + (vector-vector-xz-distance + (-> self activation-point) + (-> *target* control trans) + ) + 49152.0 + ) + (< (-> self activation-point y) (-> *target* control trans y)) + (< (-> *target* control trans y) (+ 20480.0 (-> self activation-point y))) + (not (-> self child)) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'powerup)) + (set! (-> a1-2 param 1) (the-as uint 3)) + (cond + ((send-event-function *target* a1-2) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self mask) (process-mask platform)) + (let ((gp-1 (entity-by-name "junglecam-1"))) + (cond + (gp-1 + (let + ((s5-0 (get-process *default-dead-pool* precurbridgecam #x4000))) + (when s5-0 + (let ((t9-6 (method-of-type precurbridgecam activate))) + (t9-6 + (the-as precurbridgecam s5-0) + self + 'precurbridgecam + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> gp-1 extra trans) + *junglecam-sg* + "precurbridgecam" + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) + ) + ) + (else + (format + #t + "ERROR: position for precursor bridge camera not found~%" + ) + (go precurbridge-activate) + ) + ) + ) + ) + (else + (level-hint-spawn + (game-text-id jungle-precursorbridge-hint) + "sksp0039" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior precurbridge) ja-post) + ) + +(defstate precurbridge-activate (precurbridge) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (the-as (function none :behavior precurbridge) rider-trans) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play-by-name + (static-sound-name "blue-eco-on") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-3 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-3 param 1) 0.25) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! + a0-3 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (if (rand-vu-percent? 0.1) + (spawn-projectile-blue *target*) + ) + (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) 0.25) + (joint-control-channel-group-eval! + a0-6 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go precurbridge-active #f) + (none) + ) + :post + (the-as (function none :behavior precurbridge) rider-post) + ) + +(defstate precurbridge-active (precurbridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'bonk) + (let* ((gp-0 (the-as object (-> arg3 param 0))) + (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) + (s5-0 (-> self root-override)) + ) + (touched-prim + a0-2 + s5-0 + (the-as touching-shapes-entry gp-0) + ) + ((method-of-type touching-shapes-entry touched-shape) + (the-as touching-shapes-entry gp-0) + s5-0 + ) + ) + (activate! (-> self smush) -1.0 150 600 1.0 1.0) + ) + ) + ) + ) + :trans + (the-as (function none :behavior precurbridge) rider-trans) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw bounds w) 81920.0) + (when arg0 + (ja-channel-set! 1) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + ) + (ja-post) + (dummy-47 (-> self root-override)) + (logior! (-> self mask) (process-mask actor-pause)) + (while #t + (if (not (movie?)) + (set! (-> self mask) (logior (process-mask platform) (-> self mask))) + ) + (cond + ((and + *target* + (>= + 61440.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + ) + (ja-channel-push! 1 60) + (let ((gp-1 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-identity + ) + (set! (-> gp-1 frame-num) 0.0) + ) + ) + ) + (else + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 4) + ) + ) + (ja-channel-push! 1 60) + (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 4)) + num-func-identity + ) + (set! (-> gp-2 frame-num) 0.0) + ) + ) + ) + ) + (update! (-> self sound)) + (let ((a0-19 (-> self skel root-channel 0))) + (set! (-> a0-19 param 0) 0.4) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior precurbridge) rider-post) + ) + +(defmethod copy-defaults! precurbridge ((obj precurbridge) (arg0 res-lump)) + (stack-size-set! (-> obj main-thread) 512) + (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) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 5) + (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 7) + (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 9) + (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-3 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 11) + (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-4 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 13) + (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-5 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 15) + (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-6 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 17) + (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-7 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 19) + (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-8 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 4) + (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-9 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 6) + (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-10 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 8) + (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-11 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 10) + (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-12 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 12) + (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-13 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 14) + (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-14 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 16) + (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-15 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 18) + (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (set-vector! (-> obj activation-point) 1765785.6 61440.0 -1279180.8 1.0) + (initialize-skeleton obj *precurbridge-sg* '()) + (logior! (-> obj skel status) 1) + (ja-post) + (dummy-47 (-> obj root-override)) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (set! + (-> obj sound) + (new 'process 'ambient-sound arg0 (-> obj root-override trans)) + ) + (cond + ((and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go precurbridge-active #t) + ) + (else + (go precurbridge-idle) + ) + ) + (none) + ) + +(deftype maindoor (process-drawable) + ((root-override collide-shape :offset 112) + (thresh vector :inline :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xc0 + :flag-assert #x14005000c0 + ) + + +(defskelgroup *maindoor-sg* maindoor + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +(defstate maindoor-closed (maindoor) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 1) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (when arg0 + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! (-> v1-6 frame-num) 0.0) + ) + ) + (suspend) + (dummy-47 (-> self root-override)) + (while #t + (when + (or + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (and + (and + *target* + (>= + (-> self thresh w) + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + ) + (sound-play-by-name + (static-sound-name "blue-eco-on") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + (go maindoor-open #f) + ) + (if + (and + *target* + (>= + (-> self thresh w) + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (level-hint-spawn + (game-text-id jungle-maindoor-hint) + "sksp0038" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (when (ja-min? 0) + (set! (-> self root-override root-prim prim-core action) (the-as uint 1)) + (set! (-> self root-override root-prim prim-core offense) 4) + ) + (let ((a0-19 (-> self skel root-channel 0))) + (set! (-> a0-19 param 0) 0.0) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-post) + (suspend) + ) + (none) + ) + ) + +(defstate maindoor-open (maindoor) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 0) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (process-entity-status! self (entity-perm-status complete) #t) + (when arg0 + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! + (-> v1-6 frame-num) + (the float (+ (-> v1-6 frame-group data 0 length) -1)) + ) + ) + ) + (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) + (set! (-> self root-override root-prim prim-core offense) 0) + (while (not (ja-max? 0)) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 2.0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (if (and (not arg0) (rand-vu-percent? 0.2)) + (spawn-projectile-blue *target*) + ) + (suspend) + ) + (logior! (-> self draw status) 2) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior maindoor) ja-post) + ) + +(defmethod copy-defaults! maindoor ((obj maindoor) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *maindoor-sg* '()) + (dummy-47 (-> obj root-override)) + (set! (-> obj thresh w) 61440.0) + (if + (or + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (and + (and + *target* + (>= + (-> obj thresh w) + (vector-vector-distance + (-> obj root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + ) + (go maindoor-open #t) + (go maindoor-closed #t) + ) + (none) + ) + +(deftype sidedoor (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + + +(defskelgroup *sidedoor-sg* sidedoor + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defmethod TODO-RENAME-24 sidedoor ((obj sidedoor)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 2) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-25 sidedoor ((obj sidedoor)) + (initialize-skeleton obj *sidedoor-sg* '()) + (set! (-> obj open-distance) 22528.0) + (set! (-> obj close-distance) 61440.0) + (set! (-> obj speed) 6.0) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) + +(deftype jngpusher (process-drawable) + ((root-override trsqv :offset 112) + (sync sync-info :inline :offset-assert 176) + (back-prim collide-shape-prim :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + + +(defmethod relocate jngpusher ((obj jngpusher) (arg0 int)) + (if (nonzero? (-> obj back-prim)) + (&+! (-> obj back-prim) arg0) + ) + (the-as + jngpusher + ((the-as + (function process-drawable int process-drawable) + (find-parent-method jngpusher 7) + ) + obj + arg0 + ) + ) + ) + +(defskelgroup *jngpusher-sg* jngpusher + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +(defstate jngpusher-idle (jngpusher) + :trans + (the-as (function none :behavior jngpusher) rider-trans) + :code + (behavior () + (while #t + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 num-func) num-func-identity) + (set! + (-> gp-0 frame-num) + (get-current-value-with-mirror + (-> self sync) + (the float (ja-num-frames 0)) + ) + ) + ) + (cond + ((< (ja-frame-num 0) (the float (/ (ja-num-frames 0) 3))) + (set! (-> self back-prim prim-core collide-as) (the-as uint 0)) + (set! (-> self back-prim collide-with) (the-as uint 0)) + 0 + ) + (else + (set! (-> self back-prim prim-core collide-as) (the-as uint 2048)) + (set! (-> self back-prim collide-with) (the-as uint 16)) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior jngpusher) rider-post) + ) + +(defmethod copy-defaults! jngpusher ((obj jngpusher) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask enemy 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) nothing) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) + (dummy-28 s3-0) + (set! (-> obj back-prim) s2-1) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *jngpusher-sg* '()) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (go jngpusher-idle) + (none) + ) + +(deftype jungle-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + + +(define + ripple-for-jungle-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.5 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 30.0 :xdiv -2 :speed 4.0) + (new 'static 'ripple-wave :scale 30.0 :xdiv 1 :zdiv -1 :speed 4.0) + (new 'static 'ripple-wave :scale 10.0 :xdiv -5 :zdiv -3 :speed 2.0) + (new 'static 'ripple-wave) + ) + ) + ) + +(defmethod TODO-RENAME-22 jungle-water ((obj jungle-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-jungle-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) + + + + diff --git a/goal_src/levels/jungleb/aphid.gc b/goal_src/levels/jungleb/aphid.gc index e3091fe91e..52b7d7d01d 100644 --- a/goal_src/levels/jungleb/aphid.gc +++ b/goal_src/levels/jungleb/aphid.gc @@ -84,8 +84,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-3 (-> self skel root-channel 0))) (set! @@ -166,8 +166,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-17 (-> self skel root-channel 0))) (set! diff --git a/goal_src/levels/jungleb/jungleb-obs.gc b/goal_src/levels/jungleb/jungleb-obs.gc index aa35619f79..82d057cfa0 100644 --- a/goal_src/levels/jungleb/jungleb-obs.gc +++ b/goal_src/levels/jungleb/jungleb-obs.gc @@ -5,3 +5,735 @@ ;; name in dgo: jungleb-obs ;; dgos: JUB, L1 +(define-extern *jng-iris-door-sg* skeleton-group) +(define-extern *eggtop-sg* skeleton-group) + +(declare-type eggtop process-drawable) + +(define-extern eggtop-close (state symbol eggtop)) +(define-extern eggtop-idle (state eggtop)) + +;; DECOMP BEGINS + +(deftype eggtop (process-drawable) + ((root-override collide-shape-moving :offset 112) + (cam-tracker uint64 :offset-assert 176) + (sound-id sound-id :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + + +(defskelgroup *eggtop-sg* eggtop + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -4.5 0 4.5) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 189) + (new 'static 'sparticle-launch-group + :length 5 + :duration #xbb8 + :linger-duration #x5dc + :name "group-jungle-blue-eco-room-open" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 899 :fade-after (meters 110.0)) + (sp-item 900 :fade-after (meters 110.0)) + (sp-item 901 :fade-after (meters 110.0)) + (sp-item 902 :fade-after (meters 110.0)) + (sp-item 903 :fade-after (meters 110.0)) + ) + :bounds + (new 'static 'sphere :y -24576.0 :w 32768.0) + ) + ) + +(set! + (-> *part-group-id-table* 190) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :name "group-jungle-blue-eco-room-activate" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 903) + (sp-item 903) + (sp-item 904 :flags (bit1) :period 1200 :length 15) + ) + :bounds + (new 'static 'sphere :y -24576.0 :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 904) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 30.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 20.0) (meters 10.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 5.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-r 0.0 16.0 1.0) + (sp-rnd-flt spt-g 16.0 32.0 1.0) + (sp-flt spt-b 127.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.05) (degrees 0.1) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 left-multiply-quat) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 905) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 905) + (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 225) + (sp-launcher-by-id spt-next-launcher 906) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 906) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.14222223) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 899) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 10.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 8.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-r 0.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 900) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 901) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 907) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-fade-r -1.0) + (sp-flt spt-fade-g -1.0) + (sp-flt spt-fade-a -2.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 902) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 150.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 903) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees -140.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 80.0) (degrees 200.00002) 1.0) + (sp-flt spt-conerot-radius (meters 4.0)) + (sp-end) + ) + ) + ) + +(defstate eggtop-idle (eggtop) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'notify) + (case (-> arg3 param 0) + (('pickup) + (if (type-type? (-> arg0 type) fuel-cell) + (save-reminder + (get-task-control (-> self entity extra perm task)) + 1 + 0 + ) + ) + ) + ) + ) + ) + ) + ) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) + :trans + (behavior () + (if + (and + (not (-> self child)) + (task-complete? *game-info* (-> self entity extra perm task)) + ) + (go eggtop-close #f) + ) + (spawn (-> self part) (-> self root-override trans)) + (sound-play-by-name + (static-sound-name "electric-loop") + (-> self sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (none) + ) + :code + (behavior () + (suspend) + (dummy-47 (-> self root-override)) + (anim-loop) + (none) + ) + :post + (the-as (function none :behavior eggtop) ja-post) + ) + +(defstate eggtop-close (eggtop) + :trans + (behavior () + (rider-trans) + (hide-hud-quick) + (none) + ) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (sound-play-by-name + (static-sound-name "vent-switch") + (new-sound-id) + 2048 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 190) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (let ((gp-2 (get-process *default-dead-pool* camera-tracker #x4000))) + (set! (-> self cam-tracker) (the-as uint (ppointer->handle (when gp-2 + (let + ((t9-6 + (method-of-type + camera-tracker + activate + ) + ) + ) + (t9-6 + (the-as + camera-tracker + gp-2 + ) + self + 'camera-tracker + (the-as + pointer + #x70004000 + ) + ) + ) + (run-now-in-process + gp-2 + camera-tracker-init + (lambda :behavior camera-tracker + () + (while + (not + (process-grab? + *target* + ) + ) + (suspend) + ) + (let + ((gp-0 + (-> + *display* + base-frame-counter + ) + ) + ) + (until + (>= + (- + (-> + *display* + base-frame-counter + ) + gp-0 + ) + 300 + ) + (suspend) + ) + ) + (send-event + *camera* + 'blend-from-as-fixed + ) + (camera-look-at + (the-as + process + "ecovent-171" + ) + 0 + ) + (camera-change-to + "camera-223" + 0 + #f + ) + (let + ((gp-1 + (-> + *display* + base-frame-counter + ) + ) + ) + (until + (>= + (- + (-> + *display* + base-frame-counter + ) + gp-1 + ) + 900 + ) + (suspend) + ) + ) + (while + (not + (process-release? + (handle->process + (-> + self + grab-target + ) + ) + ) + ) + (suspend) + ) + (send-event + *camera* + 'blend-from-as-fixed + ) + (level-hint-spawn + (game-text-id + jungleb-eco-vents-opened + ) + "asstvb02" + (the-as + entity + #f + ) + *entity-pool* + (game-task + none + ) + ) + (camera-look-at + *target* + 0 + ) + (camera-change-to + (the-as + string + 'base + ) + 150 + #f + ) + (send-event + (ppointer->process + (-> + *hud-parts* + fuel-cell + ) + ) + 'show + ) + (none) + ) + ) + (-> + gp-2 + ppointer + ) + ) + ) + ) + ) + ) + (save-reminder (get-task-control (-> self entity extra perm task)) 2 0) + (sound-play-by-name + (static-sound-name "jngb-eggtop-seq") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((a0-16 (-> self skel root-channel 0))) + (set! + (-> a0-16 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-16 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-16 param 1) 1.0) + (set! (-> a0-16 frame-num) 0.0) + (joint-control-channel-group! + a0-16 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 param 0) + (the float (+ (-> a0-17 frame-group data 0 length) -1)) + ) + (set! (-> a0-17 param 1) 1.0) + (joint-control-channel-group-eval! + a0-17 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-20 (-> self entity))) + (if (and a0-20 (= self (-> a0-20 extra process))) + (entity-task-complete-on a0-20) + ) + ) + (let ((gp-4 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-4 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! + (-> gp-4 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + (suspend) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + :post + (the-as (function none :behavior eggtop) rider-post) + ) + +(defmethod copy-defaults! eggtop ((obj eggtop) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *eggtop-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 189) obj) + ) + (set! (-> obj sound-id) (new-sound-id)) + (cond + ((task-complete? *game-info* (-> obj entity extra perm task)) + (go eggtop-close #t) + ) + (else + (birth-pickup-at-point + (vector+! + (new 'stack-no-clear 'vector) + (-> obj root-override trans) + (new 'static 'vector :y 6144.0 :w 1.0) + ) + 6 + (the float (-> obj entity extra perm task)) + #f + obj + (the-as fact-info #f) + ) + (go eggtop-idle) + ) + ) + (none) + ) + +(deftype jng-iris-door (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + + +(defskelgroup *jng-iris-door-sg* jng-iris-door + 0 + 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defmethod TODO-RENAME-24 jng-iris-door ((obj jng-iris-door)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-25 jng-iris-door ((obj jng-iris-door)) + (initialize-skeleton obj *jng-iris-door-sg* '()) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) + + + + diff --git a/goal_src/levels/jungleb/plat-flip.gc b/goal_src/levels/jungleb/plat-flip.gc index b62980cb76..8123af8e69 100644 --- a/goal_src/levels/jungleb/plat-flip.gc +++ b/goal_src/levels/jungleb/plat-flip.gc @@ -82,8 +82,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((s5-1 (-> self skel root-channel 0))) @@ -152,8 +152,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((f30-2 (- f30-1 (-> self before-turn-up-time))) diff --git a/goal_src/levels/maincave/cavecrystal-light.gc b/goal_src/levels/maincave/cavecrystal-light.gc index 1c40c3cf7d..0baa58f5de 100644 --- a/goal_src/levels/maincave/cavecrystal-light.gc +++ b/goal_src/levels/maincave/cavecrystal-light.gc @@ -5,6 +5,8 @@ ;; name in dgo: cavecrystal-light ;; dgos: L1, MAI, MAINCAVE +(declare-type cavecrystal process-drawable) + ;; DECOMP BEGINS (define *cavecrystal-engine* (new 'loading-level 'engine 'cavecrystal 64)) @@ -34,11 +36,11 @@ :size-assert #x170 :flag-assert #xf00000170 (:methods - (TODO-RENAME-9 (_type_ int float cavecrystal) object 9) + (TODO-RENAME-9 (_type_ int float process-drawable) object 9) (TODO-RENAME-10 (_type_ vector) float 10) (inc-intensites! (_type_) int 11) (TODO-RENAME-12 (_type_) symbol 12) - (create-connection! (_type_ cavecrystal res-lump (function object object object object object) object object) connection 13) + (create-connection! (_type_ process-drawable res-lump (function object object object object object) object object) connection 13) (execute-connections (_type_) int 14) ) ) @@ -74,7 +76,7 @@ create-connection! cavecrystal-light-control ((obj cavecrystal-light-control) - (arg0 cavecrystal) + (arg0 process-drawable) (arg1 res-lump) (arg2 (function object object object object object)) (arg3 object) @@ -187,7 +189,11 @@ (defmethod TODO-RENAME-9 cavecrystal-light-control - ((obj cavecrystal-light-control) (arg0 int) (arg1 float) (arg2 cavecrystal)) + ((obj cavecrystal-light-control) + (arg0 int) + (arg1 float) + (arg2 process-drawable) + ) (TODO-RENAME-12 obj) (when (or (< arg0 0) (>= arg0 7)) (format 0 "ERROR: Bogus cavecrystal id!~%") @@ -199,7 +205,7 @@ (+! (-> obj active-count) 1) (set! (-> s3-0 intensity) arg1) (set! (-> s3-0 crystal-handle) (process->handle arg2)) - (set! (-> s3-0 trans quad) (-> arg2 root-override trans quad)) + (set! (-> s3-0 trans quad) (-> arg2 root trans quad)) (inc-intensites! obj) ) ((and (>= 0.0 arg1) (< 0.0 (-> s3-0 intensity))) diff --git a/goal_src/levels/maincave/maincave-part.gc b/goal_src/levels/maincave/maincave-part.gc index afaac221f6..4a91dc7a01 100644 --- a/goal_src/levels/maincave/maincave-part.gc +++ b/goal_src/levels/maincave/maincave-part.gc @@ -412,8 +412,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/maincave/mother-spider-proj.gc b/goal_src/levels/maincave/mother-spider-proj.gc index 746cb2b3c3..84ebc93778 100644 --- a/goal_src/levels/maincave/mother-spider-proj.gc +++ b/goal_src/levels/maincave/mother-spider-proj.gc @@ -455,8 +455,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (sound-play-by-name @@ -465,8 +465,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -529,8 +529,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) diff --git a/goal_src/levels/maincave/spiderwebs.gc b/goal_src/levels/maincave/spiderwebs.gc index 2d6e4d8e86..188803d4dd 100644 --- a/goal_src/levels/maincave/spiderwebs.gc +++ b/goal_src/levels/maincave/spiderwebs.gc @@ -153,8 +153,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (-> self skel root-channel 0))) (set! diff --git a/goal_src/levels/misty/misty-conveyor.gc b/goal_src/levels/misty/misty-conveyor.gc index cd8455a125..797c8dd18a 100644 --- a/goal_src/levels/misty/misty-conveyor.gc +++ b/goal_src/levels/misty/misty-conveyor.gc @@ -170,8 +170,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 @@ -225,8 +225,8 @@ 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) ) @@ -490,8 +490,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-1 diff --git a/goal_src/levels/misty/misty-warehouse.gc b/goal_src/levels/misty/misty-warehouse.gc index f86679019a..7ad62ad892 100644 --- a/goal_src/levels/misty/misty-warehouse.gc +++ b/goal_src/levels/misty/misty-warehouse.gc @@ -134,8 +134,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-to-all-after (-> self link) 'trigger-rise) (go silostep-rise #f) diff --git a/goal_src/levels/misty/muse.gc b/goal_src/levels/misty/muse.gc index 7e7a09443a..5b521ba837 100644 --- a/goal_src/levels/misty/muse.gc +++ b/goal_src/levels/misty/muse.gc @@ -659,8 +659,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (close-specific-task! (game-task misty-muse) (task-status need-reminder)) (process-entity-status! self (entity-perm-status dead) #t) diff --git a/goal_src/levels/ogre/ogre-obs.gc b/goal_src/levels/ogre/ogre-obs.gc index 358cf42e34..f951d91593 100644 --- a/goal_src/levels/ogre/ogre-obs.gc +++ b/goal_src/levels/ogre/ogre-obs.gc @@ -5,3 +5,2414 @@ ;; name in dgo: ogre-obs ;; dgos: L1, OGR +(define-extern *shortcut-boulder-whole-sg* skeleton-group) +(define-extern *shortcut-boulder-broken-sg* skeleton-group) +(define-extern *ogre-bridgeend-sg* skeleton-group) +(define-extern *ogre-bridge-sg* skeleton-group) +(define-extern *ogre-isle-d-sg* skeleton-group) +(define-extern *ogre-isle-b-sg* skeleton-group) +(define-extern *ogre-step-b-sg* skeleton-group) +(define-extern *ogre-step-c-sg* skeleton-group) +(define-extern *ogre-step-a-sg* skeleton-group) +(define-extern *tntbarrel-sg* skeleton-group) +(define-extern *med-res-snow-sg* skeleton-group) +(define-extern *ogre-isle-a-sg* skeleton-group) +(define-extern *ogre-isle-c-sg* skeleton-group) + +(declare-type ogre-bridgeend process-drawable) +(declare-type ogre-bridge process-drawable) +(declare-type shortcut-boulder process-drawable) + +(define-extern ogre-bridgeend-idle (state ogre-bridgeend)) ;; unknown type +(define-extern ogre-bridge-activated (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-idle (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-break (state ogre-bridge)) ;; unknown type +(define-extern ogre-bridge-activate (state ogre-bridge)) ;; unknown type +(define-extern shortcut-boulder-idle (state shortcut-boulder)) ;; unknown type +(define-extern shortcut-boulder-break (state shortcut-boulder)) ;; unknown type + +;; DECOMP BEGINS + +(defskelgroup *med-res-snow-sg* medres-snow + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -390 150 70 410) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 473) + (new 'static 'sparticle-launch-group + :length 5 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-tntbarrel-BIG-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 2234 :period 3000 :length 5) + (sp-item 2235 :period 3000 :length 5) + (sp-item 2236 :period 3000 :length 40) + (sp-item 2237 :period 3000 :length 40) + (sp-item 2238 :period 3000 :length 40) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +(set! + (-> *part-id-table* 2236) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.4) (meters 1.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.32) (meters 0.42666668) 1.0) + (sp-flt spt-scalevel-x (meters -0.009333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-b -1.4222223) + (sp-rnd-flt spt-accel-y -2.048 -2.048 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2239) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 12.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2239) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.0666667) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2238) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-scale-x (meters 0.5)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 32.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 3.4133334)) + (sp-flt spt-fade-g -3.2666667) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2234) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 128.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2235) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 32.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2237) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 48.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 16.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.32) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.053333335)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.08533333) + (sp-rnd-flt spt-accel-y 2.048 2.048 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2240) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 160.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 8.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2240) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-fade-r -0.26666668) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-b -0.52916664) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 2241) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2241) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-fade-r -0.24380952) + (sp-flt spt-fade-g -0.12190476) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.09142857) + (sp-int spt-next-time 525) + (sp-launcher-by-id spt-next-launcher 2242) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2242) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 474) + (new 'static 'sparticle-launch-group + :length 4 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-tntbarrel-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 2079 :period 600 :length 5) + (sp-item 2080 :period 600 :length 40) + (sp-item 2081 :period 600 :length 20) + (sp-item 2082 :period 600 :length 20) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +(set! + (-> *part-id-table* 2080) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-b -1.4222223) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2083) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2083) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.0666667) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2082) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 0.85333335)) + (sp-flt spt-fade-g -3.2666667) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2079) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2081) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2084) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2084) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b -2.1166666) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 2085) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2085) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-fade-r -0.5688889) + (sp-flt spt-fade-g -0.28444445) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.21333334) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2086) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2086) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) + +(defskelgroup *tntbarrel-sg* tntbarrel + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 0 4) + :longest-edge (meters 0) + ) + +(deftype tntbarrel (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die (symbol) _type_ :state 21) + ) + ) + + +(defstate die (tntbarrel) + :virtual #t + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "dcrate-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (cond + (arg0 + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 473) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + ) + (else + (let ((gp-2 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-2 + (let ((t9-9 (method-of-type part-tracker activate))) + (t9-9 + (the-as part-tracker gp-2) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-2 + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-2 ppointer) + ) + ) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate idle (tntbarrel) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('die-big) + (go-virtual die #t) + ) + (('die) + (go-virtual die #f) + ) + (('attack 'touch) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 2) + (set! (-> a1-7 message) 'attack-invinc) + (set! (-> a1-7 param 0) (-> arg3 param 0)) + (let ((a2-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-2 mode) 'death) + (set! (-> a1-7 param 1) (the-as uint a2-2)) + ) + (send-event-function arg0 a1-7) + ) + (go-virtual die #f) + ) + ) + ) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +(defmethod copy-defaults! tntbarrel ((obj tntbarrel) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *tntbarrel-sg* '()) + (set-vector! (-> obj draw color-mult) 1.3 1.3 1.3 1.0) + (go (method-of-object obj idle)) + (none) + ) + +(defskelgroup *ogre-step-a-sg* ogre-step + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 5) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-step-b-sg* ogre-step + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 3 0 5) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-step-c-sg* ogre-step + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 3 0 6.5) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-isle-a-sg* ogre-isle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-isle-b-sg* ogre-isle + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-isle-c-sg* ogre-isle + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defskelgroup *ogre-isle-d-sg* ogre-isle + 9 + 11 + ((10 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(deftype ogre-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (idle-y-offset float :offset-assert 752) + (float-y-offset float :offset-assert 756) + (delay uint64 :offset-assert 760) + (active symbol :offset-assert 768) + (triggered entity-actor :offset-assert 772) + ) + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(defmethod TODO-RENAME-23 ogre-plat ((obj ogre-plat) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method ogre-plat 23) + ) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +(defstate rigid-body-platform-idle (ogre-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'trigger) + (set! (-> self triggered) (the-as entity-actor #t)) + (set! (-> self delay) (-> arg3 param 0)) + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + ) + :trans + (behavior () + (cond + ((-> self active) + (when + (and + *target* + (>= + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (if (-> self triggered) + (sound-play-by-name + (static-sound-name "rock-in-lava") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (go-virtual rigid-body-platform-float) + ) + ) + (else + (if + (and + (-> self triggered) + (>= + (- (-> *display* base-frame-counter) (-> self state-time)) + (the-as int (-> self delay)) + ) + ) + (set! (-> self active) #t) + ) + ) + ) + (none) + ) + :code + (behavior () + (logior! (-> self draw status) 2) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-plat) ja-post) + ) + +(defstate rigid-body-platform-float (ogre-plat) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior ogre-plat) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (cond + ((or + (not *target*) + (< + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (let ((f30-1 (-> self idle-y-offset))) + (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) + (-> self float-y-offset) + (* 32768.0 (-> *display* seconds-per-frame)) + ) + ) + ) + ) + (none) + ) + :code + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-plat) rigid-body-platform-post) + ) + +(defmethod TODO-RENAME-30 ogre-plat ((obj ogre-plat)) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-plat ((obj ogre-plat)) + (set! (-> obj float-height-offset) (-> obj idle-y-offset)) + (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)))) + (f28-0 (-> obj root-overlay root-prim local-sphere w)) + ) + (set! (-> s3-0 local-pos x) (* f28-0 (sin f30-0))) + (set! (-> s3-0 local-pos y) 0.0) + (set! (-> s3-0 local-pos z) (* f28-0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (set! (-> obj active) #f) + (set! (-> obj triggered) #f) + 0 + (none) + ) + +(define + *ogre-step-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 4.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 5.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 100.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4.0) + :inertial-tensor-y (meters 10.0) + :inertial-tensor-z (meters 4.0) + :idle-distance (meters 150.0) + :platform #t + :sound-name "lava-plat" + ) + ) + +(deftype ogre-step (ogre-plat) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(defmethod TODO-RENAME-31 ogre-step ((obj ogre-step)) + (set! (-> obj idle-y-offset) -28672.0) + (set! (-> obj float-y-offset) 0.0) + (+! (-> obj root-overlay trans y) (-> obj idle-y-offset)) + (TODO-RENAME-29 obj *ogre-step-constants*) + ((the-as (function ogre-plat none) (find-parent-method ogre-step 31)) obj) + (let ((a0-5 (entity-actor-lookup (-> obj entity) 'alt-actor 0))) + (if + (and + a0-5 + (logtest? (-> a0-5 extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj active) #t) + ) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-34 ogre-step ((obj ogre-step)) + (if (-> obj active) + (go (method-of-object obj rigid-body-platform-float)) + (go (method-of-object obj rigid-body-platform-idle)) + ) + 0 + (none) + ) + +(deftype ogre-step-a (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(deftype ogre-step-b (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(deftype ogre-step-c (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(deftype ogre-step-d (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(defmethod TODO-RENAME-31 ogre-step-a ((obj ogre-step-a)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-a-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-a 31)) obj) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-step-b ((obj ogre-step-b)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-b-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-b 31)) obj) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-step-c ((obj ogre-step-c)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 26624.0 + ) + (initialize-skeleton obj *ogre-step-c-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-c 31)) obj) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-step-d ((obj ogre-step-d)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-b-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-d 31)) obj) + 0 + (none) + ) + +(define + *ogre-isle-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 2.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 4000.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 10.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 10.0) + :cm-joint-y (meters 1.0) + :idle-distance (meters 150.0) + :platform #t + :sound-name #f + ) + ) + +(deftype ogre-isle (ogre-plat) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(defmethod TODO-RENAME-31 ogre-isle ((obj ogre-isle)) + (set! (-> obj idle-y-offset) -6144.0) + (set! (-> obj float-y-offset) 4096.0) + (TODO-RENAME-29 obj *ogre-isle-constants*) + ((the-as (function ogre-plat none) (find-parent-method ogre-isle 31)) obj) + (set! (-> obj active) #t) + 0 + (none) + ) + +(deftype ogre-isle-b (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(deftype ogre-isle-c (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(deftype ogre-isle-d (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + + +(defmethod TODO-RENAME-31 ogre-isle-b ((obj ogre-isle-b)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 24576.0 + ) + (initialize-skeleton obj *ogre-isle-b-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-b 31)) obj) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-isle-c ((obj ogre-isle-c)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 24576.0 + ) + (initialize-skeleton obj *ogre-isle-b-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-c 31)) obj) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 ogre-isle-d ((obj ogre-isle-d)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set! (-> obj root-overlay trans z) (+ -8192.0 (-> obj root-overlay trans z))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 22528.0 + ) + (initialize-skeleton obj *ogre-isle-d-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-d 31)) obj) + 0 + (none) + ) + +(defskelgroup *ogre-bridge-sg* ogre-bridge + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 52) + :longest-edge (meters 4.5) + ) + +(deftype ogre-bridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (joint-mod-array joint-mod 8 :offset-assert 176) + (dead-joint-count int8 :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd1 + :flag-assert #x14007000d1 + ) + + +(defmethod relocate ogre-bridge ((obj ogre-bridge) (arg0 int)) + (dotimes (v1-0 8) + (if (nonzero? (-> obj joint-mod-array v1-0)) + (&+! (-> obj joint-mod-array v1-0) arg0) + ) + ) + (the-as + ogre-bridge + ((the-as + (function process-drawable int process-drawable) + (find-parent-method ogre-bridge 7) + ) + obj + arg0 + ) + ) + ) + +(defbehavior ogre-bridge-update-joints ogre-bridge () + (let ((v1-1 (min 8 (-> self dead-joint-count)))) + (dotimes (a0-1 v1-1) + (let ((a1-2 (-> self joint-mod-array a0-1))) + (set! (-> a1-2 trans z) (the-as float #t)) + (set! (-> a1-2 trans x) (the-as float #t)) + (set! (-> a1-2 trans y) (the-as float #t)) + ) + ) + ) + 0 + (none) + ) + +(defstate ogre-bridge-idle (ogre-bridge) + :exit + (behavior () + (ogre-bridge-update-joints) + (none) + ) + :trans + (behavior () + (if + (and + (and + *target* + (>= + 286720.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + (go ogre-bridge-activate) + ) + 0 + (none) + ) + :code + (behavior () + (ja-post) + (while #t + (suspend) + ) + (none) + ) + ) + +(defstate ogre-bridge-activate (ogre-bridge) + :code + (behavior () + (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (when (when v1-0 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'next-stage) + (not (send-event-function (if v1-0 + (-> v1-0 extra process) + ) + a1-1 + ) + ) + ) + ) + (suspend) + 0 + ) + ) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-4 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! + a0-4 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (if (rand-vu-percent? 0.2) + (spawn-projectile-blue *target*) + ) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 param 0) + (the float (+ (-> a0-7 frame-group data 0 length) -1)) + ) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! + a0-7 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go ogre-bridge-activated) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) rider-post) + ) + +(defstate ogre-bridge-activated (ogre-bridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('break) + (+! (-> self dead-joint-count) 4) + (go ogre-bridge-break) + ) + (('break-no-damage) + (go ogre-bridge-break) + ) + (('complete) + (process-entity-status! self (entity-perm-status complete) #t) + #t + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! + (-> gp-0 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + (transform-post) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) ja-post) + ) + +(defstate ogre-bridge-break (ogre-bridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'effect) + (when (= (-> arg3 param 0) 'splash) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (-> arg3 param 2))) + (set! + (-> gp-0 quad) + (-> + self + node-list + data + a1-1 + bone + transform + vector + 3 + quad + ) + ) + ) + (set! (-> gp-0 y) 118784.0) + (let + ((s5-0 + (get-process *default-dead-pool* part-tracker #x4000) + ) + ) + (when s5-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 + (the-as part-tracker s5-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + part-tracker-init + (-> *part-group-id-table* 466) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-0 ppointer) + ) + ) + ) + ) + ) + ) + ) + ) + :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 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + 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 4)) + 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 ogre-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) rider-post) + ) + +(define + *ogre-bridge-joint-array* + (the-as (array uint8) + (new + 'static + 'boxed-array + :type uint8 :length 8 :allocated-length 8 + #x4 + #x9 + #xc + #x11 + #x7 + #xa + #xf + #x12 + ) + ) + ) + +(defmethod copy-defaults! ogre-bridge ((obj ogre-bridge) (arg0 res-lump)) + (stack-size-set! (-> obj main-thread) 512) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 5) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 6) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-3 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 7) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-4 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 8) + (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-5 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 9) + (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-6 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 10) + (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-7 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 11) + (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-8 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 12) + (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-9 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 13) + (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-10 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 14) + (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-11 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 15) + (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-12 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 16) + (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-13 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 17) + (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-14 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 18) + (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-15 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 19) + (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-16 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-16 collide-with) (the-as uint 16)) + (set! (-> s2-16 prim-core action) (the-as uint 3)) + (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 transform-index) 20) + (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *ogre-bridge-sg* '()) + (logior! (-> obj skel effect flags) 1) + (dotimes (s5-1 8) + (let + ((v1-185 + (new + 'process + 'joint-mod-set-local + obj + (the-as int (-> *ogre-bridge-joint-array* s5-1)) + #f + #f + #f + ) + ) + ) + (set! (-> obj joint-mod-array s5-1) (the-as joint-mod v1-185)) + (vector-reset! (-> v1-185 transform scale)) + ) + ) + (cond + ((and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj dead-joint-count) 8) + (ogre-bridge-update-joints) + (go ogre-bridge-activated) + ) + (else + (go ogre-bridge-idle) + ) + ) + (none) + ) + +(defskelgroup *ogre-bridgeend-sg* ogre-bridgeend + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -3 8.199999809265137) + :longest-edge (meters 0) + ) + +(deftype ogre-bridgeend (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defstate ogre-bridgeend-idle (ogre-bridgeend) + :code + (behavior () + (transform-post) + (anim-loop) + (none) + ) + ) + +(defmethod copy-defaults! ogre-bridgeend ((obj ogre-bridgeend) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ogre-bridgeend-sg* '()) + (go ogre-bridgeend-idle) + (none) + ) + +(deftype ogre-lava (water-anim) + ((idle-anim int32 :offset-assert 220) + (anim int32 :offset-assert 224) + ) + :heap-base #x80 + :method-count-assert 30 + :size-assert #xe4 + :flag-assert #x1e008000e4 + ) + + +(defstate water-vol-idle (ogre-lava) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('submerge1) + (set! (-> self anim) 3) + (go-virtual water-vol-idle) + ) + (('submerge2) + (set! (-> self anim) 5) + (go-virtual water-vol-idle) + ) + (('emerge1) + (set! (-> self anim) 4) + (go-virtual water-vol-idle) + ) + (('emerge2) + (set! (-> self anim) 6) + (go-virtual water-vol-idle) + ) + (('boulder) + (set! (-> self anim) 7) + (go-virtual water-vol-idle) + ) + (else + ((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3) + ) + ) + ) + :code + (behavior () + (ja-channel-push! 2 30) + (let ((gp-0 (-> self skel root-channel 1))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data (-> self idle-anim))) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 0.5) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (let ((v1-25 (-> self skel root-channel 1))) + (set! (-> v1-25 frame-interp) 0.5) + ) + (ja-post) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 0.5) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-37 (-> self skel root-channel 0))) + (set! + (-> v1-37 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self idle-anim))) + ) + ) + (let ((v1-40 (-> self skel root-channel 0))) + (set! (-> v1-40 num-func) num-func-identity) + (set! (-> v1-40 frame-num) 0.0) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-lava) #f) + ) + +(defstate water-vol-startup (ogre-lava) + :virtual #t + :code + (behavior () + (set! (-> self idle-anim) 2) + (set! (-> self anim) (-> self idle-anim)) + (go-virtual water-vol-idle) + (none) + ) + ) + +(define + ripple-for-ogre-lava + (new 'static 'ripple-wave-set + :count 2 + :converted #f + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 3.0) + (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 1.8) + (new 'static 'ripple-wave) + (new 'static 'ripple-wave) + ) + ) + ) + +(defmethod TODO-RENAME-22 ogre-lava ((obj ogre-lava)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set! (-> v1-2 global-scale) 2048.0) + (set! (-> v1-2 waveform) ripple-for-ogre-lava) + ) + (set! (-> obj flags) (logand -8388609 (-> obj flags))) + (set! (-> obj flags) (logior #x2000000 (-> obj flags))) + (let ((v0-2 'lava)) + (set! (-> obj attack-event) v0-2) + (the-as ripple-wave-set v0-2) + ) + ) + +(deftype shortcut-boulder (process-drawable) + ((root-override collide-shape :offset 112) + (broken-look lod-set :inline :offset-assert 176) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd1 + :flag-assert #x14007000d1 + ) + + +(defskelgroup *shortcut-boulder-whole-sg* shortcut-boulder + 0 + 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 5.5 0 7.5) + :longest-edge (meters 0) + ) + +(defskelgroup *shortcut-boulder-broken-sg* shortcut-boulder + 2 + 4 + ((3 (meters 999999))) + :bounds (static-spherem 0 5.5 0 20) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 475) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x12c + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-shortcut-boulder-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2149 :period 1500 :length 5) + (sp-item 2150 :period 1500 :length 5) + (sp-item 2151 :period 1500 :length 15) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2150) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 130.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 54.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.1333334) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2149) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 16.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.3) 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 70.0 16.0 1.0) + (sp-rnd-flt spt-g 70.0 16.0 1.0) + (sp-flt spt-b 70.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-accel-y -10.922667) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-rnd-flt spt-conerot-x (degrees 20.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2151) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 48.0 1.0) + (sp-rnd-flt spt-b 64.0 16.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.016666668) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-flt spt-accel-y -1.0922667) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 2152) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2152) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.2) + (sp-end) + ) + ) + ) + +(defstate shortcut-boulder-break (shortcut-boulder) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (lods-assign! (-> self draw) (-> self broken-look)) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 + (the-as part-tracker gp-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 475) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-5 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-5 param 1) 1.0) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + (dummy-18 self) + (deactivate self) + (none) + ) + :post + (the-as (function none :behavior shortcut-boulder) ja-post) + ) + +(defstate shortcut-boulder-idle (shortcut-boulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (go shortcut-boulder-break) + ) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +(defmethod + copy-defaults! + shortcut-boulder + ((obj shortcut-boulder) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *shortcut-boulder-whole-sg* '()) + (dummy-9 + (-> obj broken-look) + *shortcut-boulder-broken-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (set-vector! (-> obj draw color-emissive) 0.125 0.0625 0.0 0.0) + (go shortcut-boulder-idle) + (none) + ) + + + + diff --git a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc index 61a9fbd100..aa07a844c7 100644 --- a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc +++ b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc @@ -101,8 +101,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self racer boost-sound-id) @@ -112,8 +112,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! @@ -740,8 +740,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "zoomer-rev2") @@ -749,8 +749,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -922,8 +922,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (when arg2 @@ -1205,8 +1205,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (racer-calc-gravity) @@ -1409,8 +1409,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 150) (set! (-> self racer heavy) arg1) @@ -1462,8 +1462,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (ja-channel-push! 2 15) (let ((a0-4 (-> self skel root-channel 0))) @@ -1614,15 +1614,7 @@ (when (!= (-> self attack-info mode) 'endlessfall) (dummy-10 (-> self skel effect) 'group-target-hit -1.0 -1) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 90) - (sound-play-by-name - (static-sound-name "oof") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (static-sound-name "oof") (new-sound-id) 1024 0 0 1 #t) ) (set! (-> self game hit-time) (-> *display* base-frame-counter)) (logior! (-> self state-flags) 8) @@ -1772,8 +1764,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-1 @@ -2065,8 +2057,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-5 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-5 @@ -2108,8 +2100,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (camera-change-to (the-as string cam-endlessfall) 30 #f) (set! (-> self control pat-ignore-mask unknown-bit) 1) @@ -2311,8 +2303,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! gp-1 #t) ) @@ -2669,8 +2661,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control transv quad) (the-as uint128 0)) diff --git a/goal_src/levels/snow/snow-flutflut-obs.gc b/goal_src/levels/snow/snow-flutflut-obs.gc index a98e126aff..1da079a34c 100644 --- a/goal_src/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/levels/snow/snow-flutflut-obs.gc @@ -5,3 +5,1521 @@ ;; name in dgo: snow-flutflut-obs ;; dgos: L1, SNO +(define-extern *flutflut-plat-large-sg* skeleton-group) +(define-extern *flutflut-plat-med-sg* skeleton-group) +(define-extern *flutflut-plat-small-sg* skeleton-group) +(define-extern *snow-button-sg* skeleton-group) + +(declare-type flutflut-plat plat) +(declare-type snow-button process-drawable) + +(define-extern elevator-idle-at-cave (state flutflut-plat)) ;; unknown type +(define-extern elevator-travel-to-cave (state flutflut-plat)) ;; unknown type +(define-extern elevator-idle-at-fort (state flutflut-plat)) ;; unknown type +(define-extern elevator-travel-to-fort (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-hidden-idle (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-hide (state flutflut-plat)) ;; unknown type +(define-extern flutflut-plat-appear (state flutflut-plat)) ;; unknown type +(define-extern snow-button-up-idle (state snow-button)) ;; unknown type +(define-extern snow-button-deactivate (state snow-button)) ;; unknown type +(define-extern snow-button-activate (state snow-button)) ;; unknown type + +;; DECOMP BEGINS + +(deftype flutflut-plat (plat) + ((has-path? symbol :offset-assert 264) + (plat-type int32 :offset-assert 268) + (rise-time int32 :offset-assert 272) + (fall-time int32 :offset-assert 276) + (part-ry float :offset-assert 280) + (sync-starting-val float :offset-assert 284) + (flutflut-button entity-actor :offset-assert 288) + (appear-trans-top vector :inline :offset-assert 304) + (appear-trans-bottom vector :inline :offset-assert 320) + (appear-quat-top quaternion :inline :offset-assert 336) + (appear-quat-bottom quaternion :inline :offset-assert 352) + (start-trans vector :inline :offset-assert 368) + ) + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + + +(deftype snow-button (process-drawable) + ((root-override collide-shape-moving :offset 112) + (wiggled? symbol :offset-assert 176) + (timeout uint64 :offset-assert 184) + (delay-til-wiggle uint64 :offset-assert 192) + (prev-button entity-actor :offset-assert 200) + (ticker ticky :inline :offset-assert 208) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xf0 + :flag-assert #x14008000f0 + ) + + +(defskelgroup *flutflut-plat-small-sg* flutflut-plat-small + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -0.5 0 4) + :longest-edge (meters 0) + ) + +(defskelgroup *flutflut-plat-med-sg* flutflut-plat-med + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -1 0 6.75) + :longest-edge (meters 0) + ) + +(defskelgroup *flutflut-plat-large-sg* flutflut-plat-large + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 9) + :longest-edge (meters 0) + ) + +(defskelgroup *snow-button-sg* snow-button + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4.300000190734863) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 516) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-small" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2087 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2088 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2087) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters -0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-rotate-y (degrees 45.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2088) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-y (meters -1.25)) + (sp-rnd-flt spt-z -12288.0 24576.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters -0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-rotate-y (degrees 45.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 517) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-med" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2089 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2090 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2089) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 3.0) + (sp-flt spt-y (meters -2.5)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 1.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2090) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-flt spt-y (meters -2.25)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 1.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 518) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-large" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2091 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2092 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2091) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.5)) + (sp-rnd-flt spt-z -24576.0 49152.0 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters -0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-rotate-y (degrees 30.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2092) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.25)) + (sp-rnd-flt spt-z -24576.0 49152.0 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters -0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-rotate-y (degrees 30.0)) + (sp-end) + ) + ) + ) + +(defstate snow-button-up-idle (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-2 object)) + (case arg2 + (('touch 'attack 'bonk) + (when + (and + (= (-> arg0 type) target) + (logtest? (-> *target* control root-prim prim-core action) #x4000) + (>= + 10649.6 + (vector-vector-xz-distance + (-> self root-override trans) + (target-pos 0) + ) + ) + ) + (close-specific-task! (game-task snow-ball) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-button-activate) + ) + ) + (('query) + (return #f) + v0-2 + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +(defstate snow-button-activate (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-0 object)) + (case arg2 + (('untrigger) + (go snow-button-deactivate) + ) + (('query) + (return #t) + v0-0 + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self wiggled?) #f) + (sleep (-> self ticker) (-> self timeout)) + (when (-> self prev-button) + (let* ((v1-6 (-> self prev-button)) + (a0-1 (if v1-6 + (-> v1-6 extra process) + ) + ) + ) + (if a0-1 + (send-event a0-1 'untrigger) + ) + ) + ) + (send-to-all-after (-> self link) 'trigger) + (none) + ) + :trans + (behavior () + (if (completed? (-> self ticker)) + (go snow-button-deactivate) + ) + (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) + (when (not (-> self wiggled?)) + (set! (-> self wiggled?) #t) + (send-to-all-after (-> self link) 'bounce) + ) + ) + (rider-trans) + (none) + ) + :code + (behavior () + (sound-play-by-name + (static-sound-name "prec-button1") + (new-sound-id) + 1024 + -1524 + 0 + 1 + #t + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + :post + (the-as (function none :behavior snow-button) rider-post) + ) + +(defstate snow-button-deactivate (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-0 symbol)) + (case arg2 + (('query) + (return (the-as object #f)) + v0-0 + ) + ) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (none) + ) + :trans + (the-as (function none :behavior snow-button) rider-trans) + :code + (behavior () + (send-to-all-after (-> self link) 'untrigger) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 180) + (suspend) + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go snow-button-up-idle) + (none) + ) + :post + (the-as (function none :behavior snow-button) rider-post) + ) + +(defmethod copy-defaults! snow-button ((obj snow-button) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 2) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (initialize-skeleton obj *snow-button-sg* '()) + (logior! (-> obj skel status) 1) + (set! + (-> obj timeout) + (the-as + uint + (the int (* 300.0 (res-lump-float arg0 'timeout :default 10.0))) + ) + ) + (set! (-> obj delay-til-wiggle) (+ (-> obj timeout) -120)) + (if (> (entity-actor-count arg0 'alt-actor) 0) + (set! (-> obj prev-button) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> obj prev-button) #f) + ) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (transform-post) + (go snow-button-up-idle) + (none) + ) + +(defmethod dummy-26 flutflut-plat ((obj flutflut-plat)) + (let ((t9-0 (method-of-type plat dummy-26))) + (t9-0 obj) + ) + (if (zero? (-> obj link)) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + ) + (set! (-> obj sound-id) (new-sound-id)) + (set! (-> obj plat-type) (res-lump-value (-> obj entity) 'mode int)) + (set! + (-> obj flutflut-button) + (entity-actor-lookup (-> obj entity) 'alt-actor 0) + ) + (let ((f0-0 (res-lump-float (-> obj entity) 'rotoffset))) + (if (!= f0-0 0.0) + (quaternion-rotate-y! + (-> obj root-override quat) + (-> obj root-override quat) + f0-0 + ) + ) + ) + (set! + (-> obj has-path?) + (and + (zero? (logand (-> obj path flags) (path-control-flag not-found))) + (> (-> obj sync period) 0) + ) + ) + (when (nonzero? (-> obj plat-type)) + (cond + ((-> obj has-path?) + (set! (-> obj sync-starting-val) (get-phase-offset (-> obj sync))) + (sync-now! (-> obj sync) (-> obj sync-starting-val)) + (eval-path-curve! + (-> obj path) + (-> obj appear-trans-top) + (if (logtest? (-> obj fact options) 8) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) + 'interp + ) + ) + (else + (set! (-> obj appear-trans-top quad) (-> obj root-override trans quad)) + ) + ) + (set! (-> obj appear-trans-bottom quad) (-> obj appear-trans-top quad)) + (set! + (-> obj appear-trans-bottom y) + (+ -286720.0 (-> obj appear-trans-bottom y)) + ) + (quaternion-copy! (-> obj appear-quat-top) (-> obj root-override quat)) + (let ((v1-33 (res-lump-value (-> obj entity) 'extra-id uint128))) + (set! + (-> obj rise-time) + (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33))))) + ) + ) + (set! (-> obj fall-time) 180) + ) + (none) + ) + +(defmethod get-lit-skel flutflut-plat ((obj flutflut-plat)) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (return (the-as skeleton-group #t)) + ) + (when (task-complete? *game-info* (-> obj entity extra perm task)) + (process-entity-status! obj (entity-perm-status complete) #t) + (return (the-as skeleton-group #t)) + ) + (the-as skeleton-group #f) + ) + +(defstate plat-startup (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (when + (or + (!= (-> self plat-type) 1) + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear) + ) + ) + ) + ) + :code + (behavior ((arg0 plat)) + (cond + ((and + (= (-> self plat-type) 1) + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (set! (-> self basetrans quad) (-> self appear-trans-top quad)) + (go elevator-idle-at-cave) + ) + ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) + (let* ((v1-11 (-> self flutflut-button)) + (a0-10 (if v1-11 + (-> v1-11 extra process) + ) + ) + ) + (if (and a0-10 (send-event a0-10 'query)) + (go flutflut-plat-appear) + (go flutflut-plat-hidden-idle) + ) + ) + ) + (else + (let ((t9-4 (-> (method-of-type plat plat-startup) code))) + (if t9-4 + ((the-as (function none :behavior plat) t9-4)) + ) + ) + ) + ) + (none) + ) + ) + +(defstate flutflut-plat-hidden-idle (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear) + ) + ) + ) + :trans + (behavior () + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) + (go flutflut-plat-appear) + ) + (none) + ) + :code + (behavior () + (logior! (-> self draw status) 2) + (dummy-48 (-> self root-override)) + (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +(defstate flutflut-plat-appear (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (dummy-49 (-> self root-override)) + (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion)) + ) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) + (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) + ) + (quaternion-vector-angle! + (-> self appear-quat-bottom) + s5-0 + (rand-vu-float-range -21845.334 21845.334) + ) + (quaternion-axis-angle! + gp-0 + 0.0 + 1.0 + 0.0 + (rand-vu-float-range -32768.0 32768.0) + ) + (quaternion*! + (-> self appear-quat-bottom) + (-> self appear-quat-bottom) + gp-0 + ) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (behavior () + (plat-trans) + (let* + ((f0-1 + (fmin + 1.0 + (/ + (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (the float (-> self rise-time)) + ) + ) + ) + (f0-2 (- 1.0 f0-1)) + (f0-3 (* f0-2 f0-2)) + (f30-0 (- 1.0 f0-3)) + ) + (vector-lerp! + (-> self basetrans) + (-> self appear-trans-bottom) + (-> self appear-trans-top) + f30-0 + ) + (quaternion-slerp! + (-> self root-override quat) + (-> self appear-quat-bottom) + (-> self appear-quat-top) + f30-0 + ) + (set-vector! (-> self draw color-mult) f30-0 f30-0 f30-0 1.0) + (when (>= f30-0 1.0) + (dummy-22 self) + (rider-post) + (cond + ((= (-> self plat-type) 1) + (if + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (go elevator-idle-at-cave) + (go-virtual plat-idle) + ) + ) + ((-> self has-path?) + (let ((a0-9 (-> self sync))) + (sync-now! a0-9 (-> self sync-starting-val)) + (go-virtual plat-path-active (the-as plat a0-9)) + ) + ) + (else + (go-virtual plat-idle) + ) + ) + ) + ) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) rider-post) + ) + +(defstate plat-idle (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ((= v1-0 'untrigger) + (go flutflut-plat-hide) + ) + ) + ) + ) + ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) + (if t9-0 + (t9-0) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) + ) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) + (if t9-0 + (t9-0) + ) + ) + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) + (go elevator-idle-at-cave) + ) + (none) + ) + ) + +(defstate plat-path-active (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ((= v1-0 'untrigger) + (go flutflut-plat-hide) + ) + ) + ) + ) + ) + :enter + (behavior ((arg0 plat)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) + (if t9-0 + (t9-0 arg0) + ) + ) + (if + (or + (!= (-> self plat-type) 1) + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) + ) + ) + +(defstate flutflut-plat-hide (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (= v1-0 'bonk) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! + (-> self root-override root-prim prim-core action) + (logand -3 (-> self root-override root-prim prim-core action)) + ) + (set! (-> self start-trans quad) (-> self root-override trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion)) + ) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) + (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) + ) + (quaternion-vector-angle! + (-> self appear-quat-bottom) + s5-0 + (rand-vu-float-range -21845.334 21845.334) + ) + (quaternion-axis-angle! + gp-0 + 0.0 + 1.0 + 0.0 + (rand-vu-float-range -32768.0 32768.0) + ) + (quaternion*! + (-> self appear-quat-bottom) + (-> self appear-quat-bottom) + gp-0 + ) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logior! (-> self root-override root-prim prim-core action) 2) + (none) + ) + :trans + (behavior () + (plat-trans) + (let* + ((f0-1 + (fmin + 1.0 + (/ + (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (the float (-> self fall-time)) + ) + ) + ) + (f30-0 (* f0-1 f0-1)) + ) + (vector-lerp! + (-> self basetrans) + (-> self start-trans) + (-> self appear-trans-bottom) + f30-0 + ) + (quaternion-slerp! + (-> self root-override quat) + (-> self appear-quat-top) + (-> self appear-quat-bottom) + f30-0 + ) + (let ((f0-3 (- 1.0 f30-0))) + (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 1.0) + ) + (when (>= f30-0 1.0) + (rider-post) + (go flutflut-plat-hidden-idle) + ) + ) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) rider-post) + ) + +(defstate elevator-idle-at-cave (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'bonk) + (dummy-22 self) + ) + ((= v1-0 'bounce) + (if + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + (dummy-22 self) + ) + ) + ((= v1-0 'ridden) + (if + (or + (not *target*) + (zero? + (logand + (-> *target* control root-prim prim-core action) + #x4000 + ) + ) + ) + (go elevator-travel-to-fort) + ) + ) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self path-pos) 0.0) + (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp) + (none) + ) + :trans + (behavior () + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +(defstate elevator-travel-to-fort (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :trans + (behavior () + (when (= (-> self path-pos) 1.0) + (dummy-22 self) + (go elevator-idle-at-fort) + ) + (set! + (-> self path-pos) + (seek + (-> self path-pos) + 1.0 + (* 0.06666667 (-> *display* seconds-per-frame)) + ) + ) + (eval-path-curve! + (-> self path) + (-> self basetrans) + (-> self path-pos) + 'interp + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +(defstate elevator-idle-at-fort (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self path-pos) 1.0) + (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp) + (none) + ) + :trans + (behavior () + (when *target* + (if + (and + (>= 798720.0 (-> (target-pos 0) y)) + (not + (and + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + ) + (go elevator-travel-to-cave) + ) + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +(defstate elevator-travel-to-cave (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :trans + (behavior () + (when (= (-> self path-pos) 0.0) + (dummy-22 self) + (go elevator-idle-at-cave) + ) + (set! + (-> self path-pos) + (seek + (-> self path-pos) + 0.0 + (* 0.06666667 (-> *display* seconds-per-frame)) + ) + ) + (eval-path-curve! + (-> self path) + (-> self basetrans) + (-> self path-pos) + 'interp + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +(deftype flutflut-plat-small (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + + +(deftype flutflut-plat-med (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + + +(deftype flutflut-plat-large (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + + +(defmethod get-unlit-skel flutflut-plat-small ((obj flutflut-plat-small)) + *flutflut-plat-small-sg* + ) + +(defmethod TODO-RENAME-25 flutflut-plat-small ((obj flutflut-plat-small)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 516) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +(defmethod dummy-20 flutflut-plat-small ((obj flutflut-plat-small)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 2087 init-specs 12 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 2088 init-specs 17 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + +(defmethod dummy-26 flutflut-plat-small ((obj flutflut-plat-small)) + (let ((t9-0 (method-of-type flutflut-plat dummy-26))) + (t9-0 obj) + ) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +(defmethod dummy-24 flutflut-plat-small ((obj flutflut-plat-small)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod get-unlit-skel flutflut-plat-med ((obj flutflut-plat-med)) + *flutflut-plat-med-sg* + ) + +(defmethod TODO-RENAME-25 flutflut-plat-med ((obj flutflut-plat-med)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 517) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +(defmethod dummy-24 flutflut-plat-med ((obj flutflut-plat-med)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod get-unlit-skel flutflut-plat-large ((obj flutflut-plat-large)) + *flutflut-plat-large-sg* + ) + +(defmethod TODO-RENAME-25 flutflut-plat-large ((obj flutflut-plat-large)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 518) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +(defmethod dummy-20 flutflut-plat-large ((obj flutflut-plat-large)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 2091 init-specs 12 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 2092 init-specs 17 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + +(defmethod dummy-26 flutflut-plat-large ((obj flutflut-plat-large)) + (let ((t9-0 (method-of-type flutflut-plat dummy-26))) + (t9-0 obj) + ) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +(defmethod dummy-24 flutflut-plat-large ((obj flutflut-plat-large)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + + + + diff --git a/goal_src/levels/sunken/qbert-plat.gc b/goal_src/levels/sunken/qbert-plat.gc index 60fec23ca2..423110ab42 100644 --- a/goal_src/levels/sunken/qbert-plat.gc +++ b/goal_src/levels/sunken/qbert-plat.gc @@ -247,8 +247,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (else @@ -264,8 +264,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -480,7 +480,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) - (start-hint-timer (game-text-id sunken-qbert-hint)) + (start-hint-timer (game-text-id sunken-qbert-plat-hint)) (close-specific-task! (game-task sunken-platforms) (task-status need-hint) @@ -501,7 +501,7 @@ ) (if (zero? (logand v1-3 (-> self plat-states))) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* @@ -572,7 +572,7 @@ (when (not (-> self player-in-water?)) (set! gp-0 #t) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* @@ -597,7 +597,7 @@ (when (and (not s5-2) (-> self player-in-bounds?)) (set! gp-0 #t) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* diff --git a/goal_src/levels/sunken/square-platform.gc b/goal_src/levels/sunken/square-platform.gc index c967bc52bf..fbc851f319 100644 --- a/goal_src/levels/sunken/square-platform.gc +++ b/goal_src/levels/sunken/square-platform.gc @@ -303,8 +303,8 @@ sv-48 a3-0 t0-0 - (the-as uint t1-0) - (the-as vector t2-0) + t1-0 + t2-0 ) ) ) diff --git a/goal_src/levels/sunken/sunken-obs.gc b/goal_src/levels/sunken/sunken-obs.gc index ecd741edb2..7c0317876b 100644 --- a/goal_src/levels/sunken/sunken-obs.gc +++ b/goal_src/levels/sunken/sunken-obs.gc @@ -5,18 +5,818 @@ ;; name in dgo: sunken-obs ;; dgos: L1, SUN, SUNKEN -;; TODO - for square-platform +(define-extern *seaweed-sg* skeleton-group) +(define-extern *side-to-side-plat-sg* skeleton-group) +(define-extern *sunkencam-sg* skeleton-group) + +;; DECOMP BEGINS + +(deftype water-vol-deadly (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + + +(deftype side-to-side-plat (plat) + ((part-ry float :offset-assert 264) + ) + :heap-base #xa0 + :method-count-assert 33 + :size-assert #x10c + :flag-assert #x2100a0010c + ) + + +(defskelgroup *side-to-side-plat-sg* side-to-side-plat + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 14) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 436) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-side-to-side-plat" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1713 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 1714 :fade-after (meters 160.0) :falloff-to (meters 160.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 1713) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-flt spt-rotate-y (degrees 18.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1714) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 1.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-flt spt-rotate-y (degrees 18.0)) + (sp-end) + ) + ) + ) + +(defmethod get-unlit-skel side-to-side-plat ((obj side-to-side-plat)) + *side-to-side-plat-sg* + ) + +(defmethod dummy-24 side-to-side-plat ((obj side-to-side-plat)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +(defmethod dummy-26 side-to-side-plat ((obj side-to-side-plat)) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +(defmethod TODO-RENAME-25 side-to-side-plat ((obj side-to-side-plat)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 436) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +(defmethod dummy-20 side-to-side-plat ((obj side-to-side-plat)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 1713 init-specs 14 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 1714 init-specs 19 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + (deftype sunkencam (pov-camera) ((seq uint64 :offset-assert 224) ) + :heap-base #x80 :method-count-assert 30 :size-assert #xe8 - :heap-base #x80 :flag-assert #x1e008000e8 ) -;; decomp begins -(define-extern *seaweed-sg* skeleton-group) -(define-extern *side-to-side-plat-sg* skeleton-group) -(define-extern *sunkencam-sg* skeleton-group) \ No newline at end of file +(defskelgroup *sunkencam-sg* sunkencam + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +(defmethod set-stack-size! sunkencam ((obj sunkencam)) + (stack-size-set! (-> obj main-thread) 512) + (none) + ) + +(defstate pov-camera-playing (sunkencam) + :virtual #t + :exit + (behavior () + (set! (-> *screen-filter* draw?) #f) + (none) + ) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + 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 5)) + 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! + ) + ) + ) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 6)) + ) + (set! + (-> a0-3 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 6)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-3 param 1) 1.0) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! + a0-3 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 param 0) + (the float (+ (-> a0-4 frame-group data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! + a0-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-45 *screen-filter*)) + (set! (-> v1-45 draw?) #t) + (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) + ) + (set-blackout-frames 30) + (let ((a0-9 (-> self skel root-channel 0))) + (set! + (-> a0-9 frame-group) + (the-as art-joint-anim (-> self draw art-group data 7)) + ) + (set! + (-> a0-9 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 7)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-9 param 1) 1.0) + (set! (-> a0-9 frame-num) 0.0) + (joint-control-channel-group! + a0-9 + (the-as art-joint-anim (-> self draw art-group data 7)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 1.0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set-blackout-frames 150) + (let ((gp-0 2)) + (let ((a0-13 (-> self skel root-channel 0))) + (set! + (-> a0-13 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + (set! + (-> a0-13 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 8)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-13 param 1) 1.0) + (set! (-> a0-13 frame-num) 0.0) + (joint-control-channel-group! + a0-13 + (the-as art-joint-anim (-> self draw art-group data 8)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! gp-0 -1) + (if (zero? gp-0) + (set! (-> *screen-filter* draw?) #f) + ) + (suspend) + (let ((a0-14 (-> self skel root-channel 0))) + (set! + (-> a0-14 param 0) + (the float (+ (-> a0-14 frame-group data 0 length) -1)) + ) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! + a0-14 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (set-blackout-frames 30) + ) + ((= v1-0 1) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 frame-group) + (the-as art-joint-anim (-> self draw art-group data 9)) + ) + (set! + (-> a0-18 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 9)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-18 param 1) 1.0) + (set! (-> a0-18 frame-num) 0.0) + (joint-control-channel-group! + a0-18 + (the-as art-joint-anim (-> self draw art-group data 9)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-19 (-> self skel root-channel 0))) + (set! + (-> a0-19 param 0) + (the float (+ (-> a0-19 frame-group data 0 length) -1)) + ) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-116 *screen-filter*)) + (set! (-> v1-116 draw?) #t) + (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) + ) + (set-blackout-frames 30) + (let ((a0-24 (-> self skel root-channel 0))) + (set! + (-> a0-24 frame-group) + (the-as art-joint-anim (-> self draw art-group data 10)) + ) + (set! + (-> a0-24 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 10)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-24 param 1) 1.0) + (set! (-> a0-24 frame-num) 0.0) + (joint-control-channel-group! + a0-24 + (the-as art-joint-anim (-> self draw art-group data 10)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-25 (-> self skel root-channel 0))) + (set! + (-> a0-25 param 0) + (the float (+ (-> a0-25 frame-group data 0 length) -1)) + ) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! + a0-25 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set-blackout-frames 30) + (let ((gp-1 2)) + (let ((a0-28 (-> self skel root-channel 0))) + (set! + (-> a0-28 frame-group) + (the-as art-joint-anim (-> self draw art-group data 11)) + ) + (set! + (-> a0-28 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 11)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-28 param 1) 1.0) + (set! (-> a0-28 frame-num) 0.0) + (joint-control-channel-group! + a0-28 + (the-as art-joint-anim (-> self draw art-group data 11)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! gp-1 -1) + (if (zero? gp-1) + (set! (-> *screen-filter* draw?) #f) + ) + (suspend) + (let ((a0-29 (-> self skel root-channel 0))) + (set! + (-> a0-29 param 0) + (the float (+ (-> a0-29 frame-group data 0 length) -1)) + ) + (set! (-> a0-29 param 1) 1.0) + (joint-control-channel-group-eval! + a0-29 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (let ((gp-2 *camera*)) + (send-event gp-2 'teleport) + (send-event gp-2 'change-state cam-fixed 0) + (send-event gp-2 'change-state *camera-base-mode* 0) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (suspend) + ) + ) + ((= v1-0 2) + (let ((a0-36 (-> self skel root-channel 0))) + (set! + (-> a0-36 frame-group) + (the-as art-joint-anim (-> self draw art-group data 16)) + ) + (set! + (-> a0-36 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 16)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-36 param 1) 1.0) + (set! (-> a0-36 frame-num) 0.0) + (joint-control-channel-group! + a0-36 + (the-as art-joint-anim (-> self draw art-group data 16)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-37 (-> self skel root-channel 0))) + (set! + (-> a0-37 param 0) + (the float (+ (-> a0-37 frame-group data 0 length) -1)) + ) + (set! (-> a0-37 param 1) 1.0) + (joint-control-channel-group-eval! + a0-37 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((a0-39 (-> self skel root-channel 0))) + (set! + (-> a0-39 frame-group) + (the-as art-joint-anim (-> self draw art-group data 17)) + ) + (set! + (-> a0-39 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 17)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-39 param 1) 0.67) + (set! (-> a0-39 frame-num) 0.0) + (joint-control-channel-group! + a0-39 + (the-as art-joint-anim (-> self draw art-group data 17)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-40 (-> self skel root-channel 0))) + (set! + (-> a0-40 param 0) + (the float (+ (-> a0-40 frame-group data 0 length) -1)) + ) + (set! (-> a0-40 param 1) 0.67) + (joint-control-channel-group-eval! + a0-40 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 18)) + (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) + 0.67 + ) + ) + ((= v1-0 3) + (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 12)) + (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) + 1.0 + ) + ) + ((= v1-0 4) + (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 13)) + (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) + 1.3 + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + (suspend) + ) + ) + ((= v1-0 5) + (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 14)) + (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) + 1.0 + ) + ) + ((= v1-0 6) + (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 15)) + (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) + 1.0 + ) + ) + (else + (suspend) + 0 + ) + ) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +(deftype seaweed (process-drawable) + ((anim-speed float :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; NOTE - manually added +(define-extern *seaweed* seaweed) + +(defskelgroup *seaweed-sg* seaweed + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 6 0 7) + :longest-edge (meters 0) + ) + +(defstate seaweed-idle (seaweed) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 param 0) + (the float (+ (-> a0-0 frame-group data 0 length) -1)) + ) + (set! (-> a0-0 param 1) (-> self anim-speed)) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (while (not (ja-done? 0)) + (suspend) + (ja-eval) + ) + (while #t + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) (-> self anim-speed)) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) (-> self anim-speed)) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior seaweed) ja-post) + ) + +(defmethod copy-defaults! seaweed ((obj seaweed) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *seaweed-sg* '()) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! + (-> s5-1 frame-num) + (rand-vu-float-range + 0.0 + (the float (+ (-> (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + (set! (-> obj anim-speed) (rand-vu-float-range 0.2 0.4)) + (set! *seaweed* obj) + (go seaweed-idle) + (none) + ) + + + + diff --git a/goal_src/levels/sunken/sunken-water.gc b/goal_src/levels/sunken/sunken-water.gc index a827ab4b3d..d06f6bdc36 100644 --- a/goal_src/levels/sunken/sunken-water.gc +++ b/goal_src/levels/sunken/sunken-water.gc @@ -134,8 +134,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -192,8 +192,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (update! (-> self sound)) @@ -237,8 +237,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/sunken/wall-plat.gc b/goal_src/levels/sunken/wall-plat.gc index 0d534589cf..89cdfefa88 100644 --- a/goal_src/levels/sunken/wall-plat.gc +++ b/goal_src/levels/sunken/wall-plat.gc @@ -79,8 +79,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -160,8 +160,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -248,8 +248,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! gp-0 #t) ) diff --git a/goal_src/levels/swamp/swamp-obs.gc b/goal_src/levels/swamp/swamp-obs.gc index 23c2ca44c8..4cdf46a987 100644 --- a/goal_src/levels/swamp/swamp-obs.gc +++ b/goal_src/levels/swamp/swamp-obs.gc @@ -5,3 +5,1501 @@ ;; name in dgo: swamp-obs ;; dgos: L1, SWA +(define-extern *swampcam-sg* skeleton-group) +(define-extern *tar-plat-sg* skeleton-group) +(define-extern *swamp-rock-sg* skeleton-group) +(define-extern *balance-plat-sg* skeleton-group) +(define-extern *swamp-spike-sg* skeleton-group) + +(declare-type swamp-rock process-drawable) +(declare-type balance-plat process-drawable) +(declare-type swamp-spike process-drawable) +(declare-type swampgate swamp-spike) + +(define-extern swamp-rock-idle (state swamp-rock)) ;; unknown type +(define-extern swamp-rock-break (state swamp-rock)) ;; unknown type +(define-extern balance-plat-idle (state balance-plat)) ;; unknown type +(define-extern swamp-spike-gate-down (state swampgate)) ;; unknown type +(define-extern swamp-spike-gate-up (state swampgate)) ;; unknown type +(define-extern swamp-spike-idle (state swamp-spike)) ;; unknown type + +;; DECOMP BEGINS + +(set! + (-> *part-group-id-table* 289) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-spike-up" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1325 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1326 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1327 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 1325) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters 0.75)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 48.0 24.0 1.0) + (sp-rnd-flt spt-b 48.0 8.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-accel-y -0.13653333 -0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1328) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1328) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.32) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1326) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters -0.75)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 36.0 18.0 1.0) + (sp-rnd-flt spt-b 24.0 4.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-accel-y 0.13653333 0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1328) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1327) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters 0.25)) + (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 64.0 16.0 1.0) + (sp-rnd-flt spt-g 48.0 16.0 1.0) + (sp-rnd-flt spt-b 48.0 16.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -13.653334) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-int spt-next-time 390) + (sp-launcher-by-id spt-next-launcher 1329) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 290) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-spike-down" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1325 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1326 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(deftype swamp-spike (process-drawable) + ((root-override collide-shape :offset 112) + (sync sync-info :inline :offset-assert 176) + (open-gate symbol :offset-assert 184) + (dangerous symbol :offset-assert 188) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc0 + :flag-assert #x15005000c0 + (:methods + (init! (_type_) symbol 20) + ) + ) + + +(defskelgroup *swamp-spike-sg* swamp-spike + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 5 0 6) + :longest-edge (meters 2.5) + ) + +(defbehavior + swamp-spike-default-event-handler swamp-spike + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (when (-> self dangerous) + (if + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + ) + ) + ) + ) + ) + +(defun swamp-spike-set-particle-rotation-callback ((arg0 part-tracker)) + (let* ((v1-0 (the-as object (-> arg0 userdata))) + (f0-1 + (+ + -65314.562 + (quaternion-y-angle + (-> (the-as (pointer swamp-spike) v1-0) 0 root-override quat) + ) + ) + ) + ) + (set! (-> *part-id-table* 1325 init-specs 20 initial-valuef) f0-1) + (set! (-> *part-id-table* 1326 init-specs 20 initial-valuef) f0-1) + (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1) + ) + 0 + (none) + ) + +(defbehavior swamp-spike-post swamp-spike () + (transform-post) + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 to) (the-as process 1)) + (set! (-> a1-0 from) (the-as process *touching-list*)) + (if (dummy-40 (-> self root-override) a1-0) + (dummy-45 (-> self root-override)) + ) + ) + (none) + ) + +(defstate swamp-spike-idle (swamp-spike) + :event + swamp-spike-default-event-handler + :code + (behavior () + (set! (-> self dangerous) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (vector-z-quaternion! gp-0 (-> self root-override quat)) + (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root-override trans)))) + (while #t + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-10 (-> self skel root-channel 0))) + (set! + (-> v1-10 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + ) + (until (>= (get-current-phase (-> self sync)) 0.5) + (let ((v1-13 (-> self skel root-channel 0))) + (set! (-> v1-13 num-func) num-func-identity) + (set! (-> v1-13 frame-num) 0.0) + ) + (suspend) + ) + (let + ((s5-0 + (or + (not *target*) + (< + 204800.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + ) + ) + (if + (and + (and + *target* + (>= + 61440.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + *camera* + ) + (set! + s5-0 + (< + (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) + 0.0 + ) + ) + ) + (cond + (s5-0 + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend) + ) + ) + (else + (let ((a0-11 (-> self skel root-channel 0))) + (set! + (-> a0-11 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-11 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-11 param 1) 1.0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! + (-> a0-12 param 0) + (the float (+ (-> a0-12 frame-group data 0 length) -1)) + ) + (set! (-> a0-12 param 1) 1.0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (when (logtest? (-> self draw status) 8) + (let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-3 + (let ((t9-11 (method-of-type part-tracker activate))) + (t9-11 + (the-as part-tracker s5-3) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-3 + part-tracker-init + (-> *part-group-id-table* 289) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> s5-3 ppointer) + ) + ) + ) + (set! (-> self dangerous) #t) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-17 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-17 param 1) 1.0) + (set! (-> a0-17 frame-num) 0.0) + (joint-control-channel-group! + a0-17 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 param 0) + (the float (+ (-> a0-18 frame-group data 0 length) -1)) + ) + (set! (-> a0-18 param 1) 1.0) + (joint-control-channel-group-eval! + a0-18 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set! (-> self dangerous) #f) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-96 (-> self skel root-channel 0))) + (set! (-> v1-96 num-func) num-func-identity) + (set! + (-> v1-96 frame-num) + (the float (+ (-> v1-96 frame-group data 0 length) -1)) + ) + ) + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend) + ) + (when (logtest? (-> self draw status) 8) + (let ((s5-4 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-4 + (let ((t9-18 (method-of-type part-tracker activate))) + (t9-18 + (the-as part-tracker s5-4) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-4 + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> s5-4 ppointer) + ) + ) + ) + (let ((a0-29 (-> self skel root-channel 0))) + (set! + (-> a0-29 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-29 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-29 param 1) 1.0) + (set! (-> a0-29 frame-num) 0.0) + (joint-control-channel-group! + a0-29 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-30 (-> self skel root-channel 0))) + (set! + (-> a0-30 param 0) + (the float (+ (-> a0-30 frame-group data 0 length) -1)) + ) + (set! (-> a0-30 param 1) 1.0) + (joint-control-channel-group-eval! + a0-30 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ) + ) + ) + ) + (none) + ) + :post + swamp-spike-post + ) + +(defstate swamp-spike-gate-up (swampgate) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'trigger) + (let ((v0-0 #t)) + (set! (-> self open-gate) v0-0) + v0-0 + ) + ) + ) + ) + ) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-4 (-> self skel root-channel 0))) + (set! + (-> v1-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + ) + (until (-> self open-gate) + (let ((v1-7 (-> self skel root-channel 0))) + (set! (-> v1-7 num-func) num-func-identity) + (set! (-> v1-7 frame-num) 0.0) + ) + (suspend) + ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 + (the-as part-tracker gp-0) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-7 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-7 param 1) 1.0) + (set! (-> a0-7 frame-num) 0.0) + (joint-control-channel-group! + a0-7 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! + (-> a0-8 param 0) + (the float (+ (-> a0-8 frame-group data 0 length) -1)) + ) + (set! (-> a0-8 param 1) 1.0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go swamp-spike-gate-down) + (none) + ) + :post + (the-as (function none :behavior swampgate) swamp-spike-post) + ) + +(defstate swamp-spike-gate-down (swampgate) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (dummy-18 self) + (none) + ) + :post + (the-as (function none :behavior swampgate) swamp-spike-post) + ) + +(defmethod init! swamp-spike ((obj swamp-spike)) + (let + ((s5-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) + (dummy-46 s5-0) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) + ) + (dummy-28 s4-0) + (let + ((s3-1 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-1 collide-with) (the-as uint 16)) + (set! (-> s3-1 prim-core action) (the-as uint 1)) + (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 transform-index) 3) + (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) + ) + (dummy-28 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + (process-drawable-from-entity! obj (-> obj entity)) + (initialize-skeleton obj *swamp-spike-sg* '()) + (set! (-> obj draw origin-joint-index) (the-as uint 3)) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (set! (-> obj open-gate) #f) + (set! (-> obj dangerous) #f) + #f + ) + +(defmethod copy-defaults! swamp-spike ((obj swamp-spike) (arg0 res-lump)) + (init! obj) + (go swamp-spike-idle) + (none) + ) + +(deftype swampgate (swamp-spike) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc0 + :flag-assert #x15005000c0 + ) + + +(defmethod copy-defaults! swampgate ((obj swampgate) (arg0 res-lump)) + (init! obj) + (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) + (go swamp-spike-gate-down) + (go swamp-spike-gate-up) + ) + (none) + ) + +(deftype balance-plat (process-drawable) + ((root-override collide-shape-moving :offset 112) + (y-travel float :offset-assert 176) + (y-init float :offset-assert 180) + (y-offset float :offset-assert 184) + (y-vel float :offset-assert 188) + (y-accel float :offset-assert 192) + (got-grow symbol :offset-assert 196) + ) + :heap-base #x60 + :method-count-assert 20 + :size-assert #xc8 + :flag-assert #x14006000c8 + ) + + +(defskelgroup *balance-plat-sg* balance-plat + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +(defstate balance-plat-idle (balance-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'grow) + (let ((v0-0 #t)) + (set! (-> self got-grow) v0-0) + v0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior balance-plat) rider-trans) + :code + (behavior () + (while #t + (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) + (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel)))) + ) + (cond + ((and + (-> self root-override riders) + (nonzero? (-> self root-override riders num-riders)) + ) + (send-event *target* 'no-look-around 75) + (set! + (-> self y-accel) + (fmin 4.096 (fmax -4.096 (+ -0.2048 (-> self y-accel)))) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (send-to-all-after (-> self link) 'grow) + (send-to-all-before (-> self link) 'grow) + ) + ((-> self got-grow) + (set! (-> self got-grow) #f) + (set! + (-> self y-accel) + (fmin 4.096 (fmax -4.096 (+ 0.2048 (-> self y-accel)))) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + ) + ((< (-> self y-offset) 0.0) + (set! + (-> self y-accel) + (fmin + (fmin 4.096 (fmax -4.096 (+ 0.1024 (-> self y-accel)))) + (* -0.0001 (-> self y-offset)) + ) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (set! (-> self y-vel) (* 0.99 (-> self y-vel))) + ) + (else + (set! + (-> self y-accel) + (fmin + 4.096 + (fmax + (fmax -4.096 (+ -0.1024 (-> self y-accel))) + (* -0.0001 (-> self y-offset)) + ) + ) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (set! (-> self y-vel) (* 0.99 (-> self y-vel))) + ) + ) + ) + (+! (-> self y-offset) (-> self y-vel)) + (set! + (-> self root-override trans y) + (+ (-> self y-init) (-> self y-offset)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior balance-plat) rider-post) + ) + +(defmethod copy-defaults! balance-plat ((obj balance-plat) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *balance-plat-sg* '()) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj y-accel) 0.0) + (set! (-> obj y-vel) 0.0) + (set! (-> obj y-offset) 0.0) + (set! (-> obj y-init) (-> obj root-override trans y)) + (set! (-> obj got-grow) #f) + (set! (-> obj y-travel) (res-lump-float arg0 'distance :default 20480.0)) + (go balance-plat-idle) + (none) + ) + +(deftype swamp-rock (process-drawable) + ((root-override basic :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(set! + (-> *part-group-id-table* 291) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x12c + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-rock-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1330 :period 1500 :length 5) + (sp-item 1331 :period 1500 :length 5) + (sp-item 1332 :period 1500 :length 15) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 1331) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 130.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 54.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.1333334) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1330) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 16.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.3) 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 70.0 16.0 1.0) + (sp-rnd-flt spt-g 70.0 16.0 1.0) + (sp-flt spt-b 70.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-accel-y -10.922667) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-rnd-flt spt-conerot-x (degrees 20.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1332) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 48.0 1.0) + (sp-rnd-flt spt-b 64.0 16.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.016666668) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-flt spt-accel-y -1.0922667) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1333) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 1333) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.2) + (sp-end) + ) + ) + ) + +(defskelgroup *swamp-rock-sg* swamp-rock + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +(defstate swamp-rock-break (swamp-rock) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play-by-name + (static-sound-name "rock-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-4 (method-of-type part-tracker activate))) + (t9-4 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 291) + -1 + #f + #f + #f + (-> self root trans) + ) + (-> gp-1 ppointer) + ) + ) + (dummy-18 self) + (deactivate self) + (none) + ) + :post + (the-as (function none :behavior swamp-rock) ja-post) + ) + +(defstate swamp-rock-idle (swamp-rock) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (go swamp-rock-break) + ) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +(defmethod copy-defaults! swamp-rock ((obj swamp-rock) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask attackable) (-> obj mask))) + (let ((f30-0 (res-lump-float arg0 'scale-factor :default 1.0))) + (let + ((s4-0 + (new + 'process + 'collide-shape + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! + (-> s3-0 local-sphere) + 0.0 + (* 4096.0 f30-0) + 0.0 + (* 4096.0 (* 3.0 f30-0)) + ) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (vector-float*! (-> obj root scale) *identity-vector* f30-0) + ) + (initialize-skeleton obj *swamp-rock-sg* '()) + (nav-mesh-connect obj (-> obj root) (the-as nav-control #f)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 291) obj) + ) + (go swamp-rock-idle) + (none) + ) + +(defbehavior swamp-rock-init-by-other swamp-rock ((arg0 vector)) + (set! (-> self mask) (logior (process-mask attackable) (-> self mask))) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + self + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> self root) s5-0) + ) + (set! (-> self root trans quad) (-> arg0 quad)) + (initialize-skeleton self *swamp-rock-sg* '()) + (nav-mesh-connect self (-> self root) (the-as nav-control #f)) + (set! + (-> self part) + (create-launch-control (-> *part-group-id-table* 291) self) + ) + (go swamp-rock-idle) + (none) + ) + +(defskelgroup *tar-plat-sg* tar-plat + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +(define + *tar-plat-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 2.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 60.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 1000.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 4 + :mass 1.0 + :inertial-tensor-x (meters 6.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 6.0) + :cm-joint-y (meters -2.0) + :idle-distance (meters 50.0) + :platform #t + :sound-name "tar-plat" + ) + ) + +(deftype tar-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (float-height float :offset-assert 752) + ) + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f4 + :flag-assert #x23029002f4 + ) + + +(defmethod TODO-RENAME-22 tar-plat ((obj tar-plat) (arg0 vector) (arg1 float)) + (+ + (-> obj float-height) + (-> obj float-height-offset) + (* + 512.0 + (cos + (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))) + ) + ) + ) + ) + +(defmethod TODO-RENAME-23 tar-plat ((obj tar-plat) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method tar-plat 23) + ) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +(defstate rigid-body-platform-idle (tar-plat) + :virtual #t + :enter + (behavior () + (ja-channel-set! 0) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior tar-plat) ja-post) + ) + +(defstate rigid-body-platform-float (tar-plat) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior tar-plat) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (cond + ((or + (not *target*) + (< + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (let ((f30-1 -2048.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 3)) + ) + ) + (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 tar-plat) rigid-body-platform-post) + ) + +(defmethod TODO-RENAME-30 tar-plat ((obj tar-plat)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 19)) + (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) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 tar-plat ((obj tar-plat)) + (initialize-skeleton obj *tar-plat-sg* '()) + (TODO-RENAME-29 obj *tar-plat-constants*) + (set! (-> obj float-height) (-> obj entity extra trans y)) + (set! (-> obj float-height-offset) -2048.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 ((f26-0 (+ 8192.0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (f28-0 20480.0) + (f30-0 12288.0) + ) + (set! + (-> s3-0 local-pos x) + (fmax (fmin (* f28-0 (sin f26-0)) f30-0) (- f30-0)) + ) + (set! (-> s3-0 local-pos y) 0.0) + (set! + (-> s3-0 local-pos z) + (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0)) + ) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + 0 + (none) + ) + +(deftype swamp-barrel (barrel) + () + :heap-base #x90 + :method-count-assert 30 + :size-assert #x100 + :flag-assert #x1e00900100 + ) + + +(deftype swampcam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + + +(defskelgroup *swampcam-sg* swampcam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 15) + :longest-edge (meters 0) + ) + +(deftype swamp-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + + +(defstate battlecontroller-play-intro-camera (swamp-battlecontroller) + :virtual #t + :code + (behavior () + (suspend) + (process-drawable-delay-player 300) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let + ((t9-2 (method-of-type pov-camera activate)) + ) + (t9-2 + (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) + *swampcam-sg* + "swamp-ambush" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +(defstate battlecontroller-die (swamp-battlecontroller) + :virtual #t + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + ((the-as + (function none :behavior battlecontroller) + (-> (method-of-type battlecontroller battlecontroller-die) code) + ) + ) + (none) + ) + ) + + + + diff --git a/goal_src/levels/training/training-part.gc b/goal_src/levels/training/training-part.gc index c5cb66faf9..971129e884 100644 --- a/goal_src/levels/training/training-part.gc +++ b/goal_src/levels/training/training-part.gc @@ -397,8 +397,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/village1/assistant.gc b/goal_src/levels/village1/assistant.gc index e4499f68d0..7915cfc732 100644 --- a/goal_src/levels/village1/assistant.gc +++ b/goal_src/levels/village1/assistant.gc @@ -513,8 +513,8 @@ 1024 0 0 - (the-as uint 1) - (target-pos 0) + 1 + (the-as symbol (target-pos 0)) ) (let ((v1-74 (-> self skel root-channel 0))) (set! @@ -983,8 +983,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/village1/fishermans-boat.gc b/goal_src/levels/village1/fishermans-boat.gc index f280027863..5415e32875 100644 --- a/goal_src/levels/village1/fishermans-boat.gc +++ b/goal_src/levels/village1/fishermans-boat.gc @@ -880,8 +880,8 @@ (the int (* 10.24 f30-0)) (the int (* 1524.0 f28-0)) 0 - (the-as uint 1) - gp-0 + 1 + (the-as symbol gp-0) ) ) ) diff --git a/goal_src/levels/village1/village-obs-VI1.gc b/goal_src/levels/village1/village-obs-VI1.gc index 76cad28221..b8633035c6 100644 --- a/goal_src/levels/village1/village-obs-VI1.gc +++ b/goal_src/levels/village1/village-obs-VI1.gc @@ -5,3 +5,1349 @@ ;; name in dgo: village-obs ;; dgos: VI1 +(define-extern *revcycle-sg* skeleton-group) +(define-extern *revcycleprop-sg* skeleton-group) +(define-extern *hutlamp-sg* skeleton-group) +(define-extern *starfish-sg* skeleton-group) +(define-extern *starfish-nav-enemy-info* nav-enemy-info) +(define-extern *reflector-middle-sg* skeleton-group) +(define-extern *mayorgears-sg* skeleton-group) +(define-extern *windspinner-sg* skeleton-group) +(define-extern *sagesail-sg* skeleton-group) +(define-extern *windmill-sail-sg* skeleton-group) +(define-extern *med-res-jungle-sg* skeleton-group) +(define-extern *med-res-jungle1-sg* skeleton-group) +(define-extern *med-res-jungle2-sg* skeleton-group) +(define-extern *med-res-beach-sg* skeleton-group) +(define-extern *med-res-beach1-sg* skeleton-group) +(define-extern *med-res-beach2-sg* skeleton-group) +(define-extern *med-res-beach3-sg* skeleton-group) +(define-extern *med-res-misty-sg* skeleton-group) +(define-extern *med-res-village11-sg* skeleton-group) +(define-extern *med-res-village12-sg* skeleton-group) +(define-extern *med-res-village13-sg* skeleton-group) +(define-extern *med-res-training-sg* skeleton-group) + +(declare-type windmill-sail process-drawable) +(declare-type sagesail process-drawable) +(declare-type windspinner process-drawable) +(declare-type mayorgears process-drawable) +(declare-type reflector-middle process-drawable) +(declare-type starfish nav-enemy) +(declare-type reflector-end process-drawable) +(declare-type hutlamp process-drawable) +(declare-type village-fish process-drawable) +(declare-type villa-starfish process-drawable) + +(define-extern windmill-sail-idle (state windmill-sail)) ;; unknown type +(define-extern sagesail-idle (state sagesail)) ;; unknown type +(define-extern windspinner-idle (state windspinner)) ;; unknown type +(define-extern mayorgears-idle (state mayorgears)) ;; unknown type +(define-extern reflector-middle-idle (state reflector-middle)) ;; unknown type +(define-extern starfish-patrol (state starfish)) ;; unknown type +(define-extern reflector-end-idle (state reflector-end)) ;; unknown type +(define-extern hutlamp-idle (state hutlamp)) ;; unknown type +(define-extern village-fish-idle (state village-fish)) ;; unknown type +(define-extern villa-starfish-idle (state villa-starfish)) ;; unknown type +(define-extern starfish-idle (state starfish)) ;; unknown type + +;; DECOMP BEGINS + +(defskelgroup *med-res-jungle-sg* medres-jungle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -80 0 -80 240) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-jungle1-sg* medres-jungle1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 30 0 -40 230) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-jungle2-sg* medres-jungle2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 90 0 130 110) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-beach-sg* medres-beach + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -140 200) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-beach1-sg* medres-beach1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -360 200) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-beach2-sg* medres-beach2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -200 0 -450 180) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-beach3-sg* medres-beach3 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 75 70 -480 100) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-misty-sg* medres-misty + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -40 0 -20 260) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-village11-sg* medres-village11 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -100 0 90 200) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-village12-sg* medres-village12 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 40 0 -50 155) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-village13-sg* medres-village13 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 180 -40 -40 180) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-training-sg* medres-training + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -60 220) + :longest-edge (meters 0.009999999776482582) + ) + +(set! + (-> *part-id-table* 368) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 2.5) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-scale-x (meters 1.7)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.0020833334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.08888889) + (sp-flt spt-accel-y -0.13653333) + (sp-int spt-timer 720) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees 0.0) 3 16384.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 17.5) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 369) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 4.0)) + (sp-flt spt-scale-x (meters 0.5)) + (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 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-x (meters -0.01) (meters 0.02) 1.0) + (sp-flt spt-vel-y (meters 0.050666668)) + (sp-rnd-flt spt-vel-z (meters -0.01) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -3.0000002) (degrees 6.0000005) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.35555556) + (sp-flt spt-fade-g -0.35555556) + (sp-flt spt-fade-a 0.35555556) + (sp-int spt-timer 165) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees -45.0) 3 16384.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 370) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 5.0) + (sp-flt spt-x (meters 4.0)) + (sp-flt spt-scale-x (meters 1.7)) + (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 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.07666667) 1.0) + (sp-flt spt-vel-y (meters -0.006666667)) + (sp-rnd-flt spt-vel-z (meters -0.05) (meters 0.1) 1.0) + (sp-flt spt-scalevel-x (meters -0.008333334)) + (sp-rnd-flt spt-rotvel-z (degrees -3.0000002) (degrees 6.0000005) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees -45.0) 3 16384.0) + (sp-flt spt-conerot-radius (meters 10.6)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 371) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 3.8) + (sp-flt spt-x (meters 5.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 196.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.026666667) 1.0) + (sp-flt spt-vel-y (meters 0.0073333336)) + (sp-flt spt-scalevel-x (meters -0.008333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.99999994) (degrees 1.9999999) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.17777778) + (sp-flt spt-fade-a -1.0888889) + (sp-int spt-timer 165) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.3) 1.0) + (sp-end) + ) + ) + ) + +(deftype windmill-sail (process-drawable) + ((root-override trsq :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + (alt-actor entity-actor :offset-assert 224) + (part2 sparticle-launch-control :offset-assert 228) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xe8 + :flag-assert #x14008000e8 + ) + + +(defmethod relocate windmill-sail ((obj windmill-sail) (arg0 int)) + (if (nonzero? (-> obj part2)) + (&+! (-> obj part2) arg0) + ) + (the-as windmill-sail ((method-of-type process-drawable relocate) obj arg0)) + ) + +(defmethod deactivate windmill-sail ((obj windmill-sail)) + (if (nonzero? (-> obj part2)) + (kill-and-free-particles (-> obj part2)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +(defskelgroup *windmill-sail-sg* windmill-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 21) + :longest-edge (meters 14.899999618530273) + ) + +(set! + (-> *part-group-id-table* 123) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-win-wind-mill" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 368 :fade-after (meters 100.0)) + (sp-item 369 :fade-after (meters 100.0)) + (sp-item 370 :fade-after (meters 200.0)) + (sp-item 371 :fade-after (meters 200.0)) + ) + :bounds (new 'static 'sphere :w 81920.0) + ) + ) + +(set! + (-> *part-group-id-table* 124) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-win-wind-mill-hires" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 368) + (sp-item 369) + (sp-item 370) + (sp-item 371) + ) + :bounds (new 'static 'sphere :w 81920.0) + ) + ) + +(defstate windmill-sail-idle (windmill-sail) + :trans + (behavior () + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((f30-0 (get-current-value (-> self sync) 65536.0))) + (set! (-> self sync period) (the-as uint 4800)) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f30-0 + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0) + ) + (spawn (if (movie?) + (-> self part2) + (-> self part) + ) + (-> self root-override trans) + ) + (if (nonzero? (-> self sound)) + (change-sound! (-> self sound) (static-sound-name "mayors-gears")) + ) + ) + (else + (set! (-> self sync period) (the-as uint #x15f90)) + (let ((f0-3 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-3 + ) + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + ) + ) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) + (logior! (-> self draw status) 64) + (set! (-> self draw status) (logand -65 (-> self draw status))) + ) + (none) + ) + :code + (the-as (function none :behavior windmill-sail) anim-loop) + :post + (the-as (function none :behavior windmill-sail) ja-post) + ) + +(defmethod copy-defaults! windmill-sail ((obj windmill-sail) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (load-params! (-> obj sync) obj (the-as uint 4800) 0.0 0.15 0.15) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *windmill-sail-sg* '()) + (quaternion-copy! (-> obj orig-quat) (-> obj root-override quat)) + (vector-x-quaternion! (-> obj blade-normal) (-> obj root-override quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 123) obj) + ) + (set! + (-> obj part2) + (create-launch-control (-> *part-group-id-table* 124) obj) + ) + (set! + (-> obj sound) + (new 'process 'ambient-sound arg0 (-> obj root-override trans)) + ) + (go windmill-sail-idle) + (none) + ) + +(deftype sagesail (process-drawable) + ((root-override trsq :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xe0 + :flag-assert #x14007000e0 + ) + + +(defskelgroup *sagesail-sg* sagesail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 25.5) + :longest-edge (meters 24.200000762939453) + ) + +(defstate sagesail-idle (sagesail) + :trans + (behavior () + (let ((f0-0 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-0 + ) + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + (none) + ) + :code + (the-as (function none :behavior sagesail) anim-loop) + :post + (the-as (function none :behavior sagesail) ja-post) + ) + +(defmethod copy-defaults! sagesail ((obj sagesail) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *sagesail-sg* '()) + (quaternion-copy! (-> obj orig-quat) (-> obj root-override quat)) + (vector-z-quaternion! (-> obj blade-normal) (-> obj root-override quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (go sagesail-idle) + (none) + ) + +(deftype windspinner (process-drawable) + ((blade-normal vector :inline :offset-assert 176) + (orig-quat quaternion :inline :offset-assert 192) + (angle float :offset-assert 208) + (angle-vel float :offset-assert 212) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd8 + :flag-assert #x14007000d8 + ) + + +(defmethod run-logic? windspinner ((obj windspinner)) + (or + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) 8) + (>= + (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) + (vector-vector-distance (-> obj root trans) (math-camera-pos)) + ) + ) + (and + (nonzero? (-> obj skel)) + (!= (-> obj skel root-channel 0) (-> obj skel channel)) + ) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + ) + ) + ) + +(defskelgroup *windspinner-sg* windspinner + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +(defstate windspinner-idle (windspinner) + :trans + (behavior () + (let* ((f0-0 0.992) + (f1-0 0.008090864) + (a0-0 (-> self root trans)) + (f0-1 + (* + f0-0 + (+ + (* + f1-0 + (-> + *wind-work* + wind-force + (logand + (+ + (the int (-> a0-0 x)) + (the int (-> a0-0 z)) + (-> *wind-work* wind-time) + ) + 63 + ) + ) + ) + (-> self angle-vel) + ) + ) + ) + ) + (if (< 291.27112 f0-1) + (set! f0-1 291.27112) + ) + (set! (-> self angle-vel) f0-1) + ) + (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) + (set! + (-> self angle) + (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0)) + ) + ) + (quaternion-axis-angle! + (-> self root quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + (-> self angle) + ) + (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root quat)) + (none) + ) + :code + (the-as (function none :behavior windspinner) anim-loop) + :post + (the-as (function none :behavior windspinner) ja-post) + ) + +(defmethod copy-defaults! windspinner ((obj windspinner) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj angle) 0.0) + (set! (-> obj angle-vel) 145.63556) + (set! (-> obj root) (the-as trsqv (new 'process 'trsq))) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *windspinner-sg* '()) + (set! (-> obj root pause-adjust-distance) 819200.0) + (quaternion-copy! (-> obj orig-quat) (-> obj root quat)) + (vector-y-quaternion! (-> obj blade-normal) (-> obj root quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (go windspinner-idle) + (none) + ) + +(deftype mayorgears (process-drawable) + ((alt-actor entity-actor :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + + +(defskelgroup *mayorgears-sg* mayorgears + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4.5) + :longest-edge (meters 0) + ) + +(defstate mayorgears-idle (mayorgears) + :code + (behavior () + (while #t + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 1.0) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + (else + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) 0.0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mayorgears) ja-post) + ) + +(defmethod copy-defaults! mayorgears ((obj mayorgears) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *mayorgears-sg* '()) + (set! (-> obj draw shadow-mask) (the-as uint 255)) + (go mayorgears-idle) + (none) + ) + +(deftype reflector-middle (process-drawable) + ((reflector-trans vector :inline :offset-assert 176) + (next-reflector-trans vector :inline :offset-assert 192) + ) + :heap-base #x60 + :method-count-assert 20 + :size-assert #xd0 + :flag-assert #x14006000d0 + ) + + +(defskelgroup *reflector-middle-sg* reflector-middle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 17 0 17) + :longest-edge (meters 0) + ) + +(defstate reflector-middle-idle (reflector-middle) + :trans + (behavior () + (when (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status complete) #t) + (draw-eco-beam (-> self reflector-trans) (-> self next-reflector-trans)) + ) + (none) + ) + :code + (the-as (function none :behavior reflector-middle) anim-loop) + :post + (the-as (function none :behavior reflector-middle) ja-post) + ) + +(defmethod + copy-defaults! + reflector-middle + ((obj reflector-middle) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *reflector-middle-sg* '()) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj reflector-trans quad) (-> obj root trans quad)) + (+! (-> obj reflector-trans y) (res-lump-float arg0 'height-info)) + (let ((a0-10 (-> obj link next))) + (when a0-10 + (set! (-> obj next-reflector-trans quad) (-> a0-10 extra trans quad)) + (+! (-> obj next-reflector-trans y) (res-lump-float a0-10 'height-info)) + ) + ) + (logior! (-> obj draw status) 64) + (go reflector-middle-idle) + (none) + ) + +(deftype reflector-end (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defstate reflector-end-idle (reflector-end) + :code + (the-as (function none :behavior reflector-end) anim-loop) + ) + +(defmethod copy-defaults! reflector-end ((obj reflector-end) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (go reflector-end-idle) + (none) + ) + +(deftype villa-starfish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + + +(defskelgroup *starfish-sg* villa-starfish + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +(deftype starfish (nav-enemy) + () + :heap-base #x120 + :method-count-assert 76 + :size-assert #x190 + :flag-assert #x4c01200190 + ) + + +(defstate starfish-idle (starfish) + :enter + (behavior () + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (ja-channel-set! 0) + (none) + ) + :exit + (behavior () + (ja-channel-set! 1) + (none) + ) + :trans + (behavior () + (if + (and + *target* + (>= + 163840.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (go starfish-patrol) + ) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior starfish) ja-post) + ) + +(defstate starfish-patrol (starfish) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self nav flags) + (logior (nav-control-flags bit19) (-> self nav flags)) + ) + (none) + ) + :trans + (behavior () + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (if + (or + (not *target*) + (< + 204800.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (go starfish-idle) + ) + ) + (none) + ) + :code + (behavior () + (set! (-> self target-speed) 4096.0) + (set! (-> self rotate-speed) 12743.111) + (set! (-> self turn-time) 150) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + 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 2)) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior starfish) nav-enemy-patrol-post) + ) + +(define + *starfish-nav-enemy-info* + (new 'static 'nav-enemy-info + :idle-anim -1 + :walk-anim -1 + :turn-anim -1 + :notice-anim -1 + :run-anim -1 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim -1 + :taunt-anim -1 + :die-anim -1 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 1.0) + :run-rotate-speed (degrees 70.0) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.5) + :walk-travel-speed (meters 1.0) + :walk-rotate-speed (degrees 70.0) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 30.0) + :stop-chase-distance (meters 40.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1.0) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) + +(defmethod initialize-collision starfish ((obj starfish)) + (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) nothing) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core offense) 2) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj collide-info) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-48 starfish ((obj starfish)) + (initialize-skeleton obj *starfish-sg* '()) + (TODO-RENAME-45 obj *starfish-nav-enemy-info*) + 0 + (none) + ) + +(defbehavior starfish-init-by-other starfish ((arg0 starfish) (arg1 vector)) + (initialize-collision self) + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self collide-info trans quad) (-> arg1 quad)) + (quaternion-copy! (-> self collide-info quat) (-> arg0 collide-info quat)) + (vector-identity! (-> self collide-info scale)) + (set! (-> self entity) (-> arg0 entity)) + (TODO-RENAME-48 self) + (go starfish-idle) + (none) + ) + +(defbehavior process-drawable-child-count process-drawable () + (let ((v0-0 0)) + (let ((v1-0 (-> self child))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 0 brother)) + (nop!) + (nop!) + ) + ) + v0-0 + ) + ) + +(defbehavior starfish-spawn-child starfish () + (let ((gp-0 (new-stack-vector0))) + (get-random-point (-> self path) gp-0) + (let ((s5-0 (get-process *default-dead-pool* starfish #x4000))) + (the-as (pointer starfish) (when s5-0 + (let ((t9-2 (method-of-type starfish activate))) + (t9-2 + (the-as starfish s5-0) + self + 'starfish + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + starfish-init-by-other + self + gp-0 + ) + (-> s5-0 ppointer) + ) + ) + ) + ) + ) + +(defstate villa-starfish-idle (villa-starfish) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (if + (and + (and + *target* + (>= + 204800.0 + (vector-vector-distance + (-> self root trans) + (-> *target* control trans) + ) + ) + ) + (< (process-drawable-child-count) (-> self child-count)) + ) + (starfish-spawn-child) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior villa-starfish) #f) + ) + +(defmethod copy-defaults! villa-starfish ((obj villa-starfish) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (let + ((a1-4 + (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)) + ) + ) + (set! (-> obj child-count) (max 1 (min 8 (the-as int a1-4)))) + ) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) + (go villa-starfish-idle) + (none) + ) + +(deftype village-fish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + + +(defstate village-fish-idle (village-fish) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior village-fish) #f) + ) + +(defmethod copy-defaults! village-fish ((obj village-fish) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (go village-fish-idle) + (none) + ) + +(deftype villa-fisha (village-fish) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + + +(deftype villa-fishb (village-fish) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + + +(deftype cyclegen (structure) + ((output float :offset-assert 0) + (inc float :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + + +(defun set-period ((arg0 cyclegen) (arg1 int)) + (let ((f0-1 (/ 5.0 (the float arg1)))) + (set! (-> arg0 inc) f0-1) + f0-1 + ) + ) + +(defun update-clock ((arg0 cyclegen)) + (let + ((f0-1 + (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))) + ) + ) + (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) + ) + (-> arg0 output) + ) + +(deftype hutlamp (process-drawable) + ((pivot joint-mod-set-local :offset-assert 176) + (clock cyclegen :inline :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + + +(defmethod relocate hutlamp ((obj hutlamp) (arg0 int)) + (if (nonzero? (-> obj pivot)) + (&+! (-> obj pivot) arg0) + ) + (the-as + hutlamp + ((the-as + (function process-drawable int process-drawable) + (find-parent-method hutlamp 7) + ) + obj + arg0 + ) + ) + ) + +(defskelgroup *hutlamp-sg* hutlamp + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 1.2000000476837158) + :longest-edge (meters 0.699999988079071) + ) + +(defstate hutlamp-idle (hutlamp) + :code + (behavior () + (while #t + (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) + (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior hutlamp) ja-post) + ) + +(defmethod copy-defaults! hutlamp ((obj hutlamp) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *hutlamp-sg* '()) + (set! (-> obj pivot) (new 'process 'joint-mod-set-local obj 3 #f #t #f)) + (set-period (-> obj clock) 900) + (set! (-> obj clock output) (rand-vu)) + (go hutlamp-idle) + (none) + ) + +(deftype revcycleprop (process-drawable) + () + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + + +(defskelgroup *revcycleprop-sg* revcycleprop + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2.200000047683716) + :longest-edge (meters 0) + ) + +(defstate idle (revcycleprop) + :virtual #t + :code + (the-as (function none :behavior revcycleprop) anim-loop) + :post + (the-as (function none :behavior revcycleprop) ja-post) + ) + +(defmethod copy-defaults! revcycleprop ((obj revcycleprop) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *revcycleprop-sg* '()) + (set! (-> obj draw light-index) (the-as uint 1)) + (go (method-of-object obj idle)) + (none) + ) + +(deftype revcycle (process-drawable) + () + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + + +(defskelgroup *revcycle-sg* revcycle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.200000047683716) + :longest-edge (meters 0) + ) + +(defstate idle (revcycle) + :virtual #t + :code + (the-as (function none :behavior revcycle) anim-loop) + :post + (the-as (function none :behavior revcycle) ja-post) + ) + +(defmethod copy-defaults! revcycle ((obj revcycle) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *revcycle-sg* '()) + (set! (-> obj draw light-index) (the-as uint 1)) + (go (method-of-object obj idle)) + (none) + ) + +(deftype villagea-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + + +(define + ripple-for-villagea-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 4.0 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 10.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 10.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 5.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave) + ) + ) + ) + +(defmethod TODO-RENAME-22 villagea-water ((obj villagea-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-villagea-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) + + + + diff --git a/goal_src/levels/village1/village1-part2.gc b/goal_src/levels/village1/village1-part2.gc index 0a9808e64a..c0b776c321 100644 --- a/goal_src/levels/village1/village1-part2.gc +++ b/goal_src/levels/village1/village1-part2.gc @@ -1828,8 +1828,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/village2/assistant-village2.gc b/goal_src/levels/village2/assistant-village2.gc index 55821ea9c6..661159305e 100644 --- a/goal_src/levels/village2/assistant-village2.gc +++ b/goal_src/levels/village2/assistant-village2.gc @@ -1306,8 +1306,8 @@ 1024 0 0 - (the-as uint 1) - (target-pos 0) + 1 + (the-as symbol (target-pos 0)) ) (let ((a0-27 (-> self skel root-channel 0))) (set! @@ -1738,8 +1738,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/goal_src/levels/village2/village2-obs.gc b/goal_src/levels/village2/village2-obs.gc index 32bde56898..22c6d7cb9d 100644 --- a/goal_src/levels/village2/village2-obs.gc +++ b/goal_src/levels/village2/village2-obs.gc @@ -5,53 +5,2651 @@ ;; name in dgo: village2-obs ;; dgos: L1, VI2 -;; TODO - for sunken-elevator -(deftype village2cam (pov-camera) - ((seq uint64 :offset-assert 224) - ) - :method-count-assert 30 - :heap-base #x80 - :size-assert #xe8 - :flag-assert #x1e008000e8 - ) - -;; TODO - for warrior -(deftype allpontoons (process-drawable) - ((task uint8 :offset-assert 176) - ) - :method-count-assert 20 - :size-assert #xb1 - :heap-base #x50 - :flag-assert #x14005000b1 - ) - -;; TODO - for assistant-village2 -(deftype fireboulder (process-drawable) - ((tracker uint64 :offset-assert 176) - (task uint8 :offset-assert 184) - ) - :method-count-assert 20 - :size-assert #xb9 - :heap-base #x50 - :flag-assert #x14005000b9 - ) - -;; DECOMP BEGINS - -;; ERROR: top level function was not converted to expressions. Cannot decompile. - - (define-extern *ogreboss-village2-sg* skeleton-group) (define-extern *fireboulder-sg* skeleton-group) (define-extern *exit-chamber-dummy-sg* skeleton-group) (define-extern *ceilingflag-sg* skeleton-group) (define-extern *allpontoons-sg* skeleton-group) (define-extern *pontoonten-sg* skeleton-group) +(define-extern *pontoonten-constants* rigid-body-platform-constants) ;; unknown type (define-extern *pontoonfive-sg* skeleton-group) +(define-extern *pontoonfive-constants* rigid-body-platform-constants) ;; unknown type (define-extern *village2cam-sg* skeleton-group) (define-extern *med-res-rolling-sg* skeleton-group) (define-extern *med-res-rolling1-sg* skeleton-group) (define-extern *med-res-village2-sg* skeleton-group) +(declare-type pontoon rigid-body-platform) +(declare-type allpontoons process-drawable) +(declare-type ceilingflag process-drawable) +(declare-type fireboulder process-drawable) +(declare-type exit-chamber-dummy process-drawable) +(declare-type ogreboss-village2 process-drawable) + +(define-extern pontoon-die (state pontoon)) ;; unknown type +(define-extern pontoon-hidden (state pontoon)) ;; unknown type +(define-extern allpontoons-idle (state allpontoons)) ;; unknown type +(define-extern allpontoons-be-clone (state handle allpontoons)) ;; unknown type +(define-extern ceilingflag-idle (state ceilingflag)) ;; unknown type +(define-extern fireboulder-idle (state fireboulder)) ;; unknown type +(define-extern fireboulder-hover (state fireboulder)) ;; unknown type +(define-extern fireboulder-be-clone (state handle fireboulder)) ;; unknown type +(define-extern exit-chamber-dummy-wait-to-appear (state exit-chamber-dummy)) ;; unknown type +(define-extern exit-chamber-dummy-idle (state exit-chamber-dummy)) ;; unknown type +(define-extern ogreboss-village2-idle (state ogreboss-village2)) ;; unknown type +(define-extern ogreboss-village2-throw (state ogreboss-village2)) ;; unknown type + +;; DECOMP BEGINS + +(deftype village2cam (pov-camera) + ((seq uint64 :offset-assert 224) + ) + :heap-base #x80 + :method-count-assert 30 + :size-assert #xe8 + :flag-assert #x1e008000e8 + ) + + +(defskelgroup *village2cam-sg* village2cam + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +(defmethod set-stack-size! village2cam ((obj village2cam)) + (stack-size-set! (-> obj main-thread) 512) + (none) + ) + +(defstate pov-camera-playing (village2cam) + :virtual #t + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + 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 2)) + 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! + ) + ) + ) + ) + ((= v1-0 1) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-4 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! + a0-4 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! + (-> a0-5 param 0) + (the float (+ (-> a0-5 frame-group data 0 length) -1)) + ) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group-eval! + a0-5 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((= v1-0 2) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 4)) + (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) + 1.0 + ) + ) + (else + (suspend) + 0 + ) + ) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +(defskelgroup *med-res-rolling-sg* medres-rolling + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -520 110 70 100) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-rolling1-sg* medres-rolling1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -300 30 -20 120) + :longest-edge (meters 0.009999999776482582) + ) + +(defskelgroup *med-res-village2-sg* medres-village2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -60 65 0 90) + :longest-edge (meters 0.009999999776482582) + ) + +(deftype pontoon (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (task uint8 :offset-assert 752) + (alt-task uint8 :offset-assert 753) + ) + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + + +(defstate pontoon-hidden (pontoon) + :enter + (behavior () + (logior! (-> self draw status) 2) + (dummy-48 (-> self root-overlay)) + (none) + ) + :exit + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (dummy-49 (-> self root-overlay)) + (none) + ) + :trans + (behavior () + (if + (task-closed? + (the-as game-task (-> self task)) + (task-status need-resolution) + ) + (go-virtual rigid-body-platform-idle) + ) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + ) + +(defstate pontoon-die (pontoon) + :code + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate rigid-body-platform-float (pontoon) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'die) + (dummy-18 self) + (deactivate self) + ) + (else + (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + ) + ) + +(defstate rigid-body-platform-idle (pontoon) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'die) + (dummy-18 self) + (deactivate self) + ) + ) + ) + ) + ) + +(defmethod copy-defaults! pontoon ((obj pontoon) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (TODO-RENAME-30 obj) + (process-drawable-from-entity! obj arg0) + (TODO-RENAME-31 obj) + (set! (-> obj water-anim) #f) + (set! (-> obj root-overlay pause-adjust-distance) -122880.0) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (set! (-> obj alt-task) (res-lump-value arg0 'alt-task uint)) + (cond + ((and + (nonzero? (-> obj alt-task)) + (task-closed? + (the-as game-task (-> obj alt-task)) + (task-status need-resolution) + ) + ) + (go pontoon-die) + ) + ((zero? (-> obj task)) + (go (method-of-object obj rigid-body-platform-idle)) + ) + ((task-closed? + (the-as game-task (-> obj task)) + (task-status need-resolution) + ) + (go (method-of-object obj rigid-body-platform-idle)) + ) + (else + (go pontoon-hidden) + ) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-23 pontoon ((obj pontoon) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method pontoon 23) + ) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +(define + *pontoonfive-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.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 0.98 + :angular-damping 0.98 + :control-point-count 4 + :mass 2.0 + :inertial-tensor-x (meters 2.5) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90.0) + :platform #t + :sound-name "pontoonten" + ) + ) + +(define + *pontoonten-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.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 0.98 + :angular-damping 0.95 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 5.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90.0) + :platform #t + :sound-name "pontoonten" + ) + ) + +(deftype pontoonfive (pontoon) + () + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + + +(deftype pontoonten (pontoon) + () + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + + +(defskelgroup *pontoonfive-sg* pontoonfive + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :longest-edge (meters 3.5) + ) + +(defskelgroup *pontoonten-sg* pontoonten + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 4) + ) + +(defmethod TODO-RENAME-30 pontoonfive ((obj pontoonfive)) + (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) 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 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 pontoonfive ((obj pontoonfive)) + (initialize-skeleton obj *pontoonfive-sg* '()) + (TODO-RENAME-29 obj *pontoonfive-constants*) + (set! (-> obj float-height-offset) 6144.0) + (set! (-> obj root-overlay nav-radius) 12288.0) + (let ((v1-6 (-> obj control-point-array data))) + (set! (-> v1-6 0 local-pos x) 9216.0) + (set! (-> v1-6 0 local-pos y) 0.0) + (set! (-> v1-6 0 local-pos z) 12083.2) + (set! (-> v1-6 0 local-pos w) 1.0) + ) + (let ((v1-8 (-> obj control-point-array data 1))) + (set! (-> v1-8 local-pos x) 9216.0) + (set! (-> v1-8 local-pos y) 0.0) + (set! (-> v1-8 local-pos z) -12083.2) + (set! (-> v1-8 local-pos w) 1.0) + ) + (let ((v1-10 (-> obj control-point-array data 2))) + (set! (-> v1-10 local-pos x) -9216.0) + (set! (-> v1-10 local-pos y) 0.0) + (set! (-> v1-10 local-pos z) -12083.2) + (set! (-> v1-10 local-pos w) 1.0) + ) + (let ((v1-12 (-> obj control-point-array data 3))) + (set! (-> v1-12 local-pos x) -9216.0) + (set! (-> v1-12 local-pos y) 0.0) + (set! (-> v1-12 local-pos z) 12083.2) + (set! (-> v1-12 local-pos w) 1.0) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + 0 + (none) + ) + +(defmethod TODO-RENAME-30 pontoonten ((obj pontoonten)) + (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) 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 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 pontoonten ((obj pontoonten)) + (initialize-skeleton obj *pontoonten-sg* '()) + (TODO-RENAME-29 obj *pontoonten-constants*) + (set! (-> obj float-height-offset) 6144.0) + (set! (-> obj root-overlay nav-radius) 20480.0) + (let ((v1-6 (-> obj control-point-array data))) + (set! (-> v1-6 0 local-pos x) 17408.0) + (set! (-> v1-6 0 local-pos y) 0.0) + (set! (-> v1-6 0 local-pos z) 10035.2) + (set! (-> v1-6 0 local-pos w) 1.0) + ) + (let ((v1-8 (-> obj control-point-array data 1))) + (set! (-> v1-8 local-pos x) 17408.0) + (set! (-> v1-8 local-pos y) 0.0) + (set! (-> v1-8 local-pos z) -10035.2) + (set! (-> v1-8 local-pos w) 1.0) + ) + (let ((v1-10 (-> obj control-point-array data 2))) + (set! (-> v1-10 local-pos x) -17408.0) + (set! (-> v1-10 local-pos y) 0.0) + (set! (-> v1-10 local-pos z) -10035.2) + (set! (-> v1-10 local-pos w) 1.0) + ) + (let ((v1-12 (-> obj control-point-array data 3))) + (set! (-> v1-12 local-pos x) -17408.0) + (set! (-> v1-12 local-pos y) 0.0) + (set! (-> v1-12 local-pos z) 10035.2) + (set! (-> v1-12 local-pos w) 1.0) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + 0 + (none) + ) + +(set! + (-> *part-group-id-table* 563) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-allpontoons-trail" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2841 :flags (is-3d) :period 900 :length 5) + (sp-item 2842 :flags (is-3d) :period 900 :length 5) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2841) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 9.0) 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.001) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2843) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2843) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.094814815) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2842) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 8.0) (meters 8.0) 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.001) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2843) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(deftype allpontoons (process-drawable) + ((task uint8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + + +(defskelgroup *allpontoons-sg* allpontoons + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 32 0 -5 34) + :longest-edge (meters 0) + ) + +(defstate allpontoons-be-clone (allpontoons) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'end-mode) + (dummy-18 self) + (deactivate self) + ) + ) + ) + ) + :enter + (behavior ((arg0 handle)) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (behavior () + (when (>= (ja-aframe-num 0) 500.0) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 7)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)) + ) + ) + (none) + ) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate allpontoons-idle (allpontoons) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('clone) + (go allpontoons-be-clone (the-as handle (-> arg3 param 0))) + ) + ) + ) + :enter + (behavior () + (logior! (-> self draw status) 2) + (none) + ) + :code + (behavior () + (while #t + (when + (and + (nonzero? (-> self task)) + (task-closed? + (the-as game-task (-> self task)) + (task-status need-resolution) + ) + ) + (dummy-18 self) + (deactivate self) + ) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +(defmethod copy-defaults! allpontoons ((obj allpontoons) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *allpontoons-sg* '()) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 563) obj) + ) + (go allpontoons-idle) + (none) + ) + +(deftype fireboulder (process-drawable) + ((root-override collide-shape :offset 112) + (tracker handle :offset-assert 176) + (task uint8 :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb9 + :flag-assert #x14005000b9 + ) + + +(defskelgroup *fireboulder-sg* fireboulder + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3.5 0 6) + :longest-edge (meters 3.5) + ) + +(defbehavior fireboulder-disable-blocking-collision fireboulder () + (let ((v1-1 (-> self root-override root-prim))) + (dotimes (a0-0 (-> (the-as collide-shape-prim-group v1-1) num-prims)) + (let ((a1-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-0))) + (when (= (-> a1-2 prim-id) 256) + (set! (-> a1-2 prim-core collide-as) (the-as uint 0)) + (set! (-> a1-2 collide-with) (the-as uint 0)) + 0 + ) + ) + ) + (set! (-> v1-1 local-sphere x) 0.0) + (set! (-> v1-1 local-sphere w) 24576.0) + ) + 0 + (none) + ) + +(defbehavior fireboulder-hover-stuff fireboulder () + (local-vars (v0-1 object)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> self node-list data 4)) + (cond + ((handle->process (-> self tracker)) + (let + ((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0))) + (set! (-> v1-6 start-time) (-> *display* base-frame-counter)) + (set! v0-1 (-> v1-6 root trans)) + ) + (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad)) + ) + (else + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (set! v0-1 (ppointer->handle (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 + (-> *part-group-id-table* 678) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + ) + ) + (set! (-> self tracker) (the-as handle v0-1)) + ) + ) + ) + v0-1 + ) + +(defstate fireboulder-hover (fireboulder) + :enter + (behavior () + (fireboulder-disable-blocking-collision) + (ja-channel-set! 1) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + ) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (set! (-> self root-override trans quad) (-> self entity extra trans quad)) + (vector-reset! (-> self draw origin)) + (logior! (-> self skel status) 1) + (ja-post) + (set! (-> self skel status) (logand -2 (-> self skel status))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> self node-list data 4)) + (vector-! (-> self draw bounds) gp-0 (-> self root-override trans)) + ) + (set! (-> self draw bounds w) 24576.0) + (none) + ) + :exit + (behavior () + (stop! (-> self sound)) + (none) + ) + :trans + (behavior () + (fireboulder-hover-stuff) + (update! (-> self sound)) + (none) + ) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-y! + (-> self root-override quat) + (-> self root-override quat) + (* 455.1111 (-> *display* time-adjust-ratio)) + ) + (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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior fireboulder) transform-post) + ) + +(defstate fireboulder-be-clone (fireboulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop-cloning) + (go fireboulder-hover) + ) + ) + ) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self skel status) (logand -33 (-> self skel status))) + (none) + ) + :trans + (the-as (function none :behavior fireboulder) fireboulder-hover-stuff) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (format 0 "ERROR: fireboulder-be-clone ended~%") + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +(defstate fireboulder-idle (fireboulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('clone) + (go fireboulder-be-clone (the-as handle (-> arg3 param 0))) + ) + ) + ) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self tracker)))) + (if a0-1 + (deactivate a0-1) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (cond + ((zero? (-> self task)) + ) + ((handle->process (-> self tracker)) + (set! + (-> + (the-as (pointer part-tracker) (-> self tracker process)) + 0 + start-time + ) + (-> *display* base-frame-counter) + ) + ) + (else + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (set! (-> self tracker) (ppointer->handle (when gp-0 + (let + ((t9-3 + (method-of-type + part-tracker + activate + ) + ) + ) + (t9-3 + (the-as part-tracker gp-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> + *part-group-id-table* + 271 + ) + -1 + #f + #f + #f + (-> + self + root-override + trans + ) + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + ) + ) + (suspend) + (let ((a0-14 (-> self skel root-channel 0))) + (set! + (-> a0-14 param 0) + (the float (+ (-> a0-14 frame-group data 0 length) -1)) + ) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! + a0-14 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior fireboulder) ja-post) + ) + +(defmethod copy-defaults! fireboulder ((obj fireboulder) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 256) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (cond + ((name= (-> obj name) "fireboulder-6") + (quaternion-axis-angle! (-> obj root-override quat) 0.0 1.0 0.0 16384.0) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "rock-hover") + :volume #x400 + :fo-max 30 + ) + (-> obj root-override trans) + ) + ) + ) + (else + (fireboulder-disable-blocking-collision) + ) + ) + (initialize-skeleton obj *fireboulder-sg* '()) + (set! (-> obj tracker) (the-as handle #f)) + (set-vector! (-> obj draw color-emissive) 0.125 0.0625 0.0 0.0) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (cond + ((zero? (-> obj task)) + (go fireboulder-idle) + ) + ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) + (go fireboulder-hover) + ) + (else + (go fireboulder-idle) + ) + ) + (none) + ) + +(deftype ceilingflag (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + + +(defskelgroup *ceilingflag-sg* ceilingflag + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -4 0 7) + :longest-edge (meters 0) + ) + +(defstate ceilingflag-idle (ceilingflag) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior ceilingflag) ja-post) + ) + +(defmethod copy-defaults! ceilingflag ((obj ceilingflag) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ceilingflag-sg* '()) + (go ceilingflag-idle) + (none) + ) + +(deftype exit-chamber-dummy (process-drawable) + ((orig-trans vector :inline :offset-assert 176) + (fcell-handle handle :offset-assert 192) + ) + :heap-base #x60 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15006000c8 + (:methods + (skip-reminder? (_type_) symbol 20) + ) + ) + + +(defskelgroup *exit-chamber-dummy-sg* exit-chamber-dummy + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 5 0 15) + :longest-edge (meters 0) + ) + +(defmethod skip-reminder? exit-chamber-dummy ((obj exit-chamber-dummy)) + (case (get-reminder (get-task-control (game-task sunken-room)) 0) + ((2) + (let ((v1-4 (level-get *level* 'sunken))) + (if (or (not v1-4) (!= (-> v1-4 status) 'active)) + (return #t) + ) + ) + ) + ) + #f + ) + +(defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) + :code + (behavior () + (logior! (-> self draw status) 2) + (while (not (skip-reminder? self)) + (suspend) + ) + (when + (and + (not (task-complete? *game-info* (game-task sunken-room))) + (not (-> self child)) + ) + (let ((a0-3 (new 'stack-no-clear 'vector))) + (set! (-> a0-3 quad) (-> self root trans quad)) + (set! (-> a0-3 y) (+ 67584.0 (-> a0-3 y))) + (let + ((v1-12 (birth-pickup-at-point a0-3 6 47.0 #f self (the-as fact-info #f))) + ) + (set! (-> self fcell-handle) (ppointer->handle v1-12)) + (send-event (ppointer->process v1-12) 'collide-shape #f) + ) + ) + ) + (go exit-chamber-dummy-idle) + (none) + ) + ) + +(defstate exit-chamber-dummy-idle (exit-chamber-dummy) + :code + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (let ((gp-0 0)) + (while (< gp-0 2) + (if (skip-reminder? self) + (set! gp-0 0) + (+! gp-0 1) + ) + (set! + (-> self root trans y) + (+ + (-> self orig-trans y) + (* + 2252.8 + (cos + (* 36.40889 (the float (mod (-> *display* base-frame-counter) 1800))) + ) + ) + ) + ) + (let ((a0-7 (handle->process (-> self fcell-handle)))) + (when a0-7 + (let ((v1-14 (new 'stack-no-clear 'vector))) + (set! (-> v1-14 quad) (-> self root trans quad)) + (set! (-> v1-14 y) (+ 67584.0 (-> v1-14 y))) + (send-event a0-7 'trans v1-14) + ) + ) + ) + (suspend) + ) + ) + (let ((a0-11 (handle->process (-> self fcell-handle)))) + (if a0-11 + (deactivate a0-11) + ) + ) + (go exit-chamber-dummy-wait-to-appear) + (none) + ) + :post + (the-as (function none :behavior exit-chamber-dummy) ja-post) + ) + +(defmethod + copy-defaults! + exit-chamber-dummy + ((obj exit-chamber-dummy) (arg0 res-lump)) + (set! (-> obj fcell-handle) (the-as handle #f)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj root trans y) (+ 24576.0 (-> obj root trans y))) + (set! (-> obj orig-trans quad) (-> obj root trans quad)) + (initialize-skeleton obj *exit-chamber-dummy-sg* '()) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (logior! (-> obj draw status) 2) + (go exit-chamber-dummy-wait-to-appear) + (none) + ) + +(deftype ogreboss-village2 (process-drawable) + ((boulder handle :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + + +(defskelgroup *ogreboss-village2-sg* ogreboss-village2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 10 0 15) + :longest-edge (meters 0) + ) + +(set! + (-> *part-group-id-table* 564) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-trail" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2319 :fade-after (meters 200.0) :falloff-to (meters 200.0)) + (sp-item 2320 :fade-after (meters 200.0) :falloff-to (meters 200.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +(set! + (-> *part-id-table* 2320) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (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 8.0) (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 128.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.00083333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-rnd-flt spt-rotvel-z (degrees -1.9999999) (degrees 3.9999998) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.21333334) + (sp-flt spt-fade-g -0.10666667) + (sp-flt spt-fade-b 0.10666667) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.027306668) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2319) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (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 8.0) (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 128.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 80.0 80.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.00083333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-rnd-flt spt-rotvel-z (degrees -1.9999999) (degrees 3.9999998) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.53333336) + (sp-flt spt-fade-b -0.17777778) + (sp-flt spt-fade-a -1.0666667) + (sp-flt spt-accel-y -0.027306668) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 551) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-hit-wall" + :launcher + (new 'static 'inline-array sparticle-group-item 1 + (sp-item 2287 :period 900 :length 40) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +(set! + (-> *part-id-table* 2287) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 10.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.4)) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 552) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-splash" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2288 :period 900 :length 20) + (sp-item 2321 :flags (is-3d) :period 900 :length 10) + (sp-item 2322 :flags (is-3d) :period 900 :length 10) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +(set! + (-> *part-id-table* 2321) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 9.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 16.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2323) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2323) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.094814815) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2322) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 8.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 4.5) (meters 3.5) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.02) (meters 0.013333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2323) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 2288) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 12.0) (meters 6.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 50.0) + (sp-rnd-flt spt-g 80.0 64.0 1.0) + (sp-flt spt-b 200.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.026666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 2.048 2.048 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 660) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 90.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 8.0) 1.0) + (sp-end) + ) + ) + ) + +(defbehavior ogreboss-village2-trans ogreboss-village2 () + (when + (= (get-task-status (game-task village2-levitator)) (task-status invalid)) + (dummy-18 self) + (deactivate self) + ) + (none) + ) + +(defbehavior boulder1-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 82.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +(defbehavior boulder2-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 120.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +(defbehavior boulder2-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 82.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder2-trans-2) + ) + 0 + (none) + ) + +(defbehavior boulder3-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 131.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +(defbehavior boulder3-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 80.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder3-trans-2) + ) + 0 + (none) + ) + +(defbehavior boulder4-trans-3 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 152.4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +(defbehavior boulder4-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 116.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder4-trans-3) + ) + 0 + (none) + ) + +(defbehavior boulder4-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 74.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder4-trans-2) + ) + 0 + (none) + ) + +(defstate ogreboss-village2-throw (ogreboss-village2) + :trans + ogreboss-village2-trans + :code + (behavior () + (let ((gp-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> self boulder) (ppointer->handle (when gp-0 + (let + ((t9-1 + (method-of-type + manipy + activate + ) + ) + ) + (t9-1 + (the-as manipy gp-0) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + manipy-init + (-> self entity extra trans) + (-> self entity) + *fireboulder-sg* + #f + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-pre-throw" + 0 + ) + (send-event (handle->process (-> self boulder)) 'draw #t) + (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) + (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) + (send-event + (handle->process (-> self boulder)) + 'eval + (lambda :behavior ogreboss-village2 + () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) + (set! (-> self part) v0-0) + v0-0 + ) + ) + ) + (ja-channel-push! 1 60) + (let ((a0-31 (-> self skel root-channel 0))) + (set! + (-> a0-31 frame-group) + (the-as art-joint-anim (-> self draw art-group data 7)) + ) + (set! + (-> a0-31 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 7)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-31 param 1) 1.0) + (set! (-> a0-31 frame-num) 0.0) + (joint-control-channel-group! + a0-31 + (the-as art-joint-anim (-> self draw art-group data 7)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-32 (-> self skel root-channel 0))) + (set! + (-> a0-32 param 0) + (the float (+ (-> a0-32 frame-group data 0 length) -1)) + ) + (set! (-> a0-32 param 1) 1.0) + (joint-control-channel-group-eval! + a0-32 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let* ((v1-72 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-73 (the-as number (logior #x3f800000 v1-72))) + (f0-9 (+ -1.0 (the-as float v1-73))) + ) + (cond + ((< 0.75 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder1" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder1-trans + ) + ) + ((< 0.5 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder2" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder2-trans + ) + ) + ((< 0.25 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder3" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder3-trans + ) + ) + (else + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder4" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder4-trans + ) + ) + ) + ) + (ja-channel-push! 1 60) + (let ((a0-69 (-> self skel root-channel 0))) + (set! + (-> a0-69 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-69 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-69 param 1) 1.0) + (set! (-> a0-69 frame-num) 0.0) + (joint-control-channel-group! + a0-69 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-70 (-> self skel root-channel 0))) + (set! + (-> a0-70 param 0) + (the float (+ (-> a0-70 frame-group data 0 length) -1)) + ) + (set! (-> a0-70 param 1) 1.0) + (joint-control-channel-group-eval! + a0-70 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go ogreboss-village2-idle) + (none) + ) + :post + (the-as (function none :behavior ogreboss-village2) ja-post) + ) + +(defstate ogreboss-village2-idle (ogreboss-village2) + :trans + ogreboss-village2-trans + :code + (behavior () + (while #t + (ja-channel-push! 1 30) + (let ((v1-0 (rand-vu-int-range 0 2))) + (cond + ((zero? v1-0) + (let ((gp-0 (-> self skel root-channel 0))) + (set! + (-> gp-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! (-> gp-0 param 0) (ja-aframe 140.0 0)) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 140.0 0)) + (set! (-> gp-1 param 1) 1.0) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((gp-2 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-2) 50) + (suspend) + ) + ) + (let ((gp-3 (-> self skel root-channel 0))) + (set! + (-> gp-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! (-> gp-3 param 0) (ja-aframe 168.0 0)) + (set! (-> gp-3 param 1) 1.0) + (set! (-> gp-3 frame-num) (ja-aframe 140.0 0)) + (joint-control-channel-group! + gp-3 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 param 0) (ja-aframe 168.0 0)) + (set! (-> gp-4 param 1) 1.0) + (joint-control-channel-group-eval! + gp-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((gp-5 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-5) 50) + (suspend) + ) + ) + (let ((gp-6 (-> self skel root-channel 0))) + (set! + (-> gp-6 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> gp-6 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> gp-6 param 1) 1.0) + (set! (-> gp-6 frame-num) (ja-aframe 168.0 0)) + (joint-control-channel-group! + gp-6 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-15 (-> self skel root-channel 0))) + (set! + (-> a0-15 param 0) + (the float (+ (-> a0-15 frame-group data 0 length) -1)) + ) + (set! (-> a0-15 param 1) 1.0) + (joint-control-channel-group-eval! + a0-15 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((= v1-0 1) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-18 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-18 param 1) 1.0) + (set! (-> a0-18 frame-num) 0.0) + (joint-control-channel-group! + a0-18 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-19 (-> self skel root-channel 0))) + (set! + (-> a0-19 param 0) + (the float (+ (-> a0-19 frame-group data 0 length) -1)) + ) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (else + (dotimes (gp-7 4) + (let ((a0-21 (-> self skel root-channel 0))) + (set! + (-> a0-21 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-21 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-21 param 1) 1.0) + (set! (-> a0-21 frame-num) 0.0) + (joint-control-channel-group! + a0-21 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-22 (-> self skel root-channel 0))) + (set! + (-> a0-22 param 0) + (the float (+ (-> a0-22 frame-group data 0 length) -1)) + ) + (set! (-> a0-22 param 1) 1.0) + (joint-control-channel-group-eval! + a0-22 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ) + ) + ) + (let* ((v1-104 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-105 (the-as number (logior #x3f800000 v1-104))) + (f0-33 (+ -1.0 (the-as float v1-105))) + ) + (cond + ((< 0.6666667 f0-33) + (ja-channel-push! 1 60) + (let ((a0-27 (-> self skel root-channel 0))) + (set! + (-> a0-27 frame-group) + (the-as art-joint-anim (-> self draw art-group data 6)) + ) + (set! + (-> a0-27 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 6)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-27 param 1) 1.0) + (set! (-> a0-27 frame-num) 0.0) + (joint-control-channel-group! + a0-27 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-28 (-> self skel root-channel 0))) + (set! + (-> a0-28 param 0) + (the float (+ (-> a0-28 frame-group data 0 length) -1)) + ) + (set! (-> a0-28 param 1) 1.0) + (joint-control-channel-group-eval! + a0-28 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((not (handle->process (-> self boulder))) + (go ogreboss-village2-throw) + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior ogreboss-village2) ja-post) + ) + +(defmethod + copy-defaults! + ogreboss-village2 + ((obj ogreboss-village2) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 1) + (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ogreboss-village2-sg* '()) + (set-vector! (-> obj root scale) 0.65 0.65 0.65 1.0) + (transform-post) + (set! (-> obj root pause-adjust-distance) 122880.0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj boulder) (the-as handle #f)) + (go ogreboss-village2-idle) + (none) + ) + +(deftype villageb-ogreboss (ogreboss-village2) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + + +(deftype villageb-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + + +(define + ripple-for-villageb-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 6.0 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 7.0 :xdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 7.0 :xdiv -1 :zdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 3.0) + (new 'static 'ripple-wave) + ) + ) + ) + +(defmethod TODO-RENAME-22 villageb-water ((obj villageb-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-villageb-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) + + diff --git a/goal_src/levels/village2/village2-part.gc b/goal_src/levels/village2/village2-part.gc index 1f22008395..e3b95592a3 100644 --- a/goal_src/levels/village2/village2-part.gc +++ b/goal_src/levels/village2/village2-part.gc @@ -2536,8 +2536,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/scripts/update-goal-src.py b/scripts/update-goal-src.py index 293df503cd..a423150499 100644 --- a/scripts/update-goal-src.py +++ b/scripts/update-goal-src.py @@ -22,7 +22,9 @@ throw_error = False # that will be picked up by git to shame you files_with_modifications = [ "target-util", - "ambient" + "ambient", + "viewer", + "sunken-obs" ] for file in files: @@ -105,5 +107,42 @@ for file in files: print("Copied - {}!".format(file)) + print("Copying game-text-id enum") + begin_str = ";; GAME-TEXT-ID ENUM BEGINS" + end_str = ";; GAME-TEXT-ID ENUM ENDS" + enum_lines = [] + with open('./decompiler/config/all-types.gc') as f: + lines = f.readlines() + found_enum = False + for line in lines: + if found_enum and end_str in line: + break + if found_enum: + enum_lines.append(line) + if begin_str in line: + found_enum = True + new_texth_lines = [] + with open('goal_src/engine/ui/text-h.gc') as f: + lines = f.readlines() + found_enum = False + for line in lines: + if begin_str in line: + found_enum = True + new_texth_lines.append(begin_str + "\n") + new_texth_lines += enum_lines + new_texth_lines.append(end_str + "\n") + continue + if end_str in line: + found_enum = False + continue + if found_enum: + continue + new_texth_lines.append(line) + os.remove('goal_src/engine/ui/text-h.gc') + with open('goal_src/engine/ui/text-h.gc', "w") as f: + f.writelines(new_texth_lines) + print("game-text-id enum updated!") + + if throw_error: exit(1) diff --git a/sunken-obs.manual_restore_reminder b/sunken-obs.manual_restore_reminder new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test.sh b/test.sh index e6e06387d6..c52aa0d52b 100755 --- a/test.sh +++ b/test.sh @@ -3,4 +3,4 @@ # Directory of this script DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -$DIR/build/goalc-test --gtest_color=yes "$@" +$DIR/build/goalc-test --gtest_color=yes "$@" --gtest_filter="-*MANUAL_TEST*" diff --git a/test/decompiler/reference/engine/ambient/ambient_REF.gc b/test/decompiler/reference/engine/ambient/ambient_REF.gc index 4c1b898cb5..1489cd27a8 100644 --- a/test/decompiler/reference/engine/ambient/ambient_REF.gc +++ b/test/decompiler/reference/engine/ambient/ambient_REF.gc @@ -673,19 +673,7 @@ (s4-1 string->sound-name) ) (format (clear *temp-string*) "spool-~S" arg0) - (let - ((s5-2 - (s5-1 - (s4-1 *temp-string*) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - ) - ) + (let ((s5-2 (s5-1 (s4-1 *temp-string*) (new-sound-id) 1024 0 0 1 #t))) (set! (-> self sound-id) s5-2) (let ((s4-3 (-> *display* base-frame-counter))) (while @@ -773,8 +761,8 @@ 1024 1 0 - (the-as uint 1) - (-> self trans) + 1 + (the-as symbol (-> self trans)) ) ) ) @@ -786,15 +774,7 @@ (format (clear *temp-string*) "spool-~S" arg0) (set! (-> self sound-id) - (s5-1 - (s4-2 *temp-string*) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (s5-1 (s4-2 *temp-string*) (new-sound-id) 1024 0 0 1 #t) ) ) ) diff --git a/test/decompiler/reference/engine/ambient/mood_REF.gc b/test/decompiler/reference/engine/ambient/mood_REF.gc index a0ff8894eb..a2ee272144 100644 --- a/test/decompiler/reference/engine/ambient/mood_REF.gc +++ b/test/decompiler/reference/engine/ambient/mood_REF.gc @@ -1125,8 +1125,8 @@ (the int (* 10.24 (rand-vu-float-range 25.0 75.0))) (the int (* 1524.0 (rand-vu-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "thunder") @@ -1134,8 +1134,8 @@ (the int (* 10.24 (rand-vu-float-range 200.0 400.0))) (the int (* 1524.0 (rand-vu-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/engine/anim/joint_REF.gc b/test/decompiler/reference/engine/anim/joint_REF.gc new file mode 100644 index 0000000000..33f3c7339f --- /dev/null +++ b/test/decompiler/reference/engine/anim/joint_REF.gc @@ -0,0 +1,1929 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 2 of type joint +(defmethod print joint ((obj joint)) + (format + #t + "#<~A ~S ~D @ #x~X>" + (-> obj type) + (-> obj name) + (-> obj number) + obj + ) + obj + ) + +;; definition for method 8 of type joint +(defmethod mem-usage joint ((obj joint) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 66 (-> arg0 length))) + (set! (-> arg0 data 65 name) "joint") + (+! (-> arg0 data 65 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 65 used) v1-6) + (+! (-> arg0 data 65 total) (logand -16 (+ v1-6 15))) + ) + obj + ) + +;; definition for method 2 of type joint-anim +(defmethod print joint-anim ((obj joint-anim)) + (format + #t + "#<~A ~S ~D [~D] @ #x~X>" + (-> obj type) + (-> obj name) + (-> obj number) + (-> obj length) + obj + ) + obj + ) + +;; definition for method 4 of type joint-anim +(defmethod length joint-anim ((obj joint-anim)) + (-> obj length) + ) + +;; definition for method 3 of type joint-anim-matrix +(defmethod inspect joint-anim-matrix ((obj joint-anim-matrix)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Tnumber: ~D~%" (-> obj number)) + (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data)) + obj + ) + +;; definition for method 5 of type joint-anim-matrix +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of joint-anim-matrix ((obj joint-anim-matrix)) + (the-as int (+ (-> joint-anim-matrix size) (* (-> obj length) 64))) + ) + +;; definition for method 3 of type joint-anim-transformq +(defmethod inspect joint-anim-transformq ((obj joint-anim-transformq)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Tnumber: ~D~%" (-> obj number)) + (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data)) + (dotimes (s5-0 (-> obj length)) + (format #t "~T [~D] ~`transformq`P~%" s5-0 (-> obj data s5-0)) + ) + obj + ) + +;; definition for method 5 of type joint-anim-transformq +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of joint-anim-transformq ((obj joint-anim-transformq)) + (the-as int (+ (-> joint-anim-transformq size) (* 48 (-> obj length)))) + ) + +;; definition for method 5 of type joint-anim-drawable +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of joint-anim-drawable ((obj joint-anim-drawable)) + (the-as int (+ (-> joint-anim-drawable size) (* (-> obj length) 4))) + ) + +;; definition for function joint-anim-login +(defun joint-anim-login ((arg0 joint-anim-drawable)) + (dotimes (s5-0 (-> arg0 length)) + (if (-> arg0 data s5-0) + (login (-> arg0 data s5-0)) + ) + ) + arg0 + ) + +;; definition for function joint-anim-inspect-elt +(defun joint-anim-inspect-elt ((arg0 joint-anim) (arg1 float)) + (case (-> arg0 type) + ((joint-anim-matrix) + ((method-of-type matrix inspect) + (the-as + matrix + (-> (the-as joint-anim-matrix arg0) data (the int arg1) vector) + ) + ) + ) + ((joint-anim-transformq) + (format + #t + "~`transform`P~%" + (-> (the-as joint-anim-transformq arg0) data (the int arg1)) + ) + ) + ) + arg0 + ) + +;; definition for method 8 of type joint-anim-drawable +(defmethod + mem-usage + joint-anim-drawable + ((obj joint-anim-drawable) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 77 (-> arg0 length))) + (set! (-> arg0 data 76 name) "joint-anim-drawable") + (+! (-> arg0 data 76 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 76 used) v1-6) + (+! (-> arg0 data 76 total) (logand -16 (+ v1-6 15))) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) + +;; definition for function jacc-mem-usage +(defun + jacc-mem-usage + ((arg0 joint-anim-compressed-control) (arg1 memory-usage-block) (arg2 int)) + (set! (-> arg1 length) (max 68 (-> arg1 length))) + (set! (-> arg1 data 67 name) "joint-anim-compressed-control") + (+! (-> arg1 data 67 count) 1) + (let ((v1-7 (+ (* (-> arg0 num-frames) 4) 16))) + (+! (-> arg1 data 67 used) v1-7) + (+! (-> arg1 data 67 total) (logand -16 (+ v1-7 15))) + ) + (set! (-> arg1 length) (max 69 (-> arg1 length))) + (set! (-> arg1 data 68 name) "joint-anim-fixed") + (+! (-> arg1 data 68 count) 1) + (let ((v1-17 (+ (-> arg0 fixed-qwc) 16))) + (+! (-> arg1 data 68 used) v1-17) + (+! (-> arg1 data 68 total) (logand -16 (+ v1-17 15))) + ) + (dotimes (v1-21 (the-as int (-> arg0 num-frames))) + (set! (-> arg1 length) (max 70 (-> arg1 length))) + (set! (-> arg1 data 69 name) "joint-anim-frame") + (+! (-> arg1 data 69 count) 1) + (let ((a2-15 (* (-> arg0 frame-qwc) 16))) + (+! (-> arg1 data 69 used) a2-15) + (+! (-> arg1 data 69 total) (logand -16 (+ a2-15 15))) + ) + ) + arg0 + ) + +;; definition for method 2 of type joint-control-channel +(defmethod print joint-control-channel ((obj joint-control-channel)) + (format + #t + "#" + (-> obj command) + (-> obj frame-group) + (-> obj frame-num) + obj + ) + obj + ) + +;; definition for method 5 of type joint-control +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of joint-control ((obj joint-control)) + (the-as int (+ (-> obj type size) (* 48 (-> obj allocated-length)))) + ) + +;; definition for method 0 of type joint-control +(defmethod new joint-control ((allocation symbol) (type-to-make type) (arg0 int)) + (let + ((v0-0 + (object-new + allocation + type-to-make + (the-as int (+ (-> type-to-make size) (* 48 arg0))) + ) + ) + ) + (set! (-> v0-0 allocated-length) arg0) + (set! (-> v0-0 active-channels) 0) + (set! (-> v0-0 root-channel) (-> v0-0 channel)) + (set! + (-> v0-0 generate-frame-function) + (the-as + (function pointer int process-drawable none) + create-interpolated-joint-animation-frame + ) + ) + (set! (-> v0-0 prebind-function) #f) + (set! (-> v0-0 postbind-function) #f) + (set! (-> v0-0 effect) #f) + (dotimes (v1-4 arg0) + (set! (-> v0-0 channel v1-4 parent) v0-0) + ) + (set! (-> v0-0 blend-index) -1) + v0-0 + ) + ) + +;; definition for method 9 of type joint-control-channel +(defmethod dummy-9 joint-control-channel ((obj joint-control-channel)) + (let ((s5-0 (-> obj frame-group)) + (f30-0 (-> obj frame-num)) + ) + (dotimes (s4-0 (length s5-0)) + (format #t "joint ~A ~D " (-> s5-0 data s4-0 name) s4-0) + (joint-anim-inspect-elt (-> s5-0 data s4-0) f30-0) + ) + ) + obj + ) + +;; definition for method 10 of type joint-control +(defmethod dummy-10 joint-control ((obj joint-control) (arg0 symbol)) + (dotimes (s4-0 (-> obj active-channels)) + (let* + ((v1-6 + (if + (and + (-> obj channel s4-0 frame-group) + (nonzero? (-> obj channel s4-0 frame-group)) + ) + (-> obj channel s4-0 frame-group) + ) + ) + (t9-0 format) + (a0-5 arg0) + (a1-1 "ch:~2d ~C ~-35S f: ~6,,2f ~4,,2f ~4,,2f%~%") + (a2-0 s4-0) + (a3-3 (-> obj channel s4-0 command)) + (a3-4 (cond + ((= a3-3 'push) + 80 + ) + ((= a3-3 'push1) + 112 + ) + ((= a3-3 'blend) + 66 + ) + ((= a3-3 'stack) + 83 + ) + ((= a3-3 'stack1) + 115 + ) + ) + ) + ) + (t9-0 a0-5 a1-1 a2-0 a3-4 (if v1-6 + (-> v1-6 name) + "(none)" + ) + (+ (* (-> obj channel s4-0 frame-num) (if v1-6 + (-> v1-6 artist-step) + 1.0 + ) + ) + (if v1-6 + (-> v1-6 artist-base) + 0.0 + ) + ) + (-> obj channel s4-0 frame-interp) + (-> obj channel s4-0 inspector-amount) + ) + ) + ) + 0 + ) + +;; definition for method 12 of type art +(defmethod needs-link? art ((obj art)) + #f + ) + +;; definition for method 10 of type art +;; INFO: Return type mismatch symbol vs joint. +(defmethod dummy-10 art ((obj art) (arg0 string) (arg1 type)) + (the-as joint #f) + ) + +;; definition for method 11 of type art +;; INFO: Return type mismatch symbol vs int. +(defmethod dummy-11 art ((obj art) (arg0 string) (arg1 type)) + (the-as int #f) + ) + +;; definition for method 2 of type art +(defmethod print art ((obj art)) + (format + #t + "#<~A ~S :length ~D @ #x~X>" + (-> obj type) + (-> obj name) + (-> obj length) + obj + ) + obj + ) + +;; definition for method 4 of type art +(defmethod length art ((obj art)) + (-> obj length) + ) + +;; definition for method 9 of type art +(defmethod login art ((obj art)) + (if (and (-> obj extra) (zero? (-> obj extra tag))) + (set! (-> obj extra tag) (the-as (pointer res-tag) (-> obj extra trans))) + ) + obj + ) + +;; definition for method 8 of type art-mesh-anim +(defmethod + mem-usage + art-mesh-anim + ((obj art-mesh-anim) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 72 (-> arg0 length))) + (set! (-> arg0 data 71 name) "art-mesh-anim") + (+! (-> arg0 data 71 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 71 used) v1-6) + (+! (-> arg0 data 71 total) (logand -16 (+ v1-6 15))) + ) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) + +;; definition for method 5 of type art-joint-anim +;; INFO: this function exists in multiple non-identical object files +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of art-joint-anim ((obj art-joint-anim)) + (the-as int (+ (-> art size) (* (-> obj length) 4))) + ) + +;; definition for method 3 of type art-joint-anim +(defmethod inspect art-joint-anim ((obj art-joint-anim)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tlength: ~D~%" (-> obj length)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Textra: ~A~%" (-> obj extra)) + (format #t "~Tspeed: ~F~%" (-> obj speed)) + (format #t "~Tartist-base: ~F~%" (-> obj artist-base)) + (format #t "~Tartist-step: ~F~%" (-> obj artist-step)) + (format #t "~Tmaster-art-group-name: ~A~%" (-> obj master-art-group-name)) + (format #t "~Tmaster-art-group-index: ~D~%" (-> obj master-art-group-index)) + (format #t "~Tframes: @ #x~X~%" (-> obj frames)) + (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data)) + (dotimes (s5-0 (-> obj length)) + (format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0)) + ) + obj + ) + +;; definition for method 8 of type art-joint-anim +(defmethod + mem-usage + art-joint-anim + ((obj art-joint-anim) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 75 (-> arg0 length))) + (set! (-> arg0 data 74 name) "art-joint-anim") + (+! (-> arg0 data 74 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 74 used) v1-6) + (+! (-> arg0 data 74 total) (logand -16 (+ v1-6 15))) + ) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) + (jacc-mem-usage (-> obj frames) arg0 arg1) + (dotimes (s4-1 (-> obj length)) + (set! (-> arg0 length) (max 67 (-> arg0 length))) + (set! (-> arg0 data 66 name) "joint-anim-compressed") + (+! (-> arg0 data 66 count) 1) + (let ((v1-22 (asize-of (-> obj data s4-1)))) + (+! (-> arg0 data 66 used) v1-22) + (+! (-> arg0 data 66 total) (logand -16 (+ v1-22 15))) + ) + ) + (when (and (nonzero? (-> obj _unknown)) (-> obj _unknown)) + (set! (-> arg0 length) (max 109 (-> arg0 length))) + (set! (-> arg0 data 108 name) "eye-anim") + (+! (-> arg0 data 108 count) 1) + (let ((v1-41 (* (* (+ (-> obj _unknown 0) 1) 2) 8))) + (+! (-> arg0 data 108 used) v1-41) + (+! (-> arg0 data 108 total) (logand -16 (+ v1-41 15))) + ) + ) + obj + ) + +;; definition for method 5 of type art-joint-anim +;; INFO: this function exists in multiple non-identical object files +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of art-joint-anim ((obj art-joint-anim)) + (the-as int (+ (-> art size) (* (-> obj length) 4))) + ) + +;; definition for method 3 of type art-group +(defmethod inspect art-group ((obj art-group)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tinfo: ~A~%" (-> obj info)) + (format #t "~Tlength: ~D~%" (-> obj length)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Textra: ~A~%" (-> obj extra)) + (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data)) + (dotimes (s5-0 (-> obj length)) + (if (-> obj data s5-0) + (format + #t + "~T [~D] ~A (~D bytes)~%" + s5-0 + (-> obj data s5-0) + (mem-size (-> obj data s5-0) #f 0) + ) + (format #t "~T [~D] ~A (~D bytes)~%" s5-0 (-> obj data s5-0) 0) + ) + ) + obj + ) + +;; definition for method 12 of type art-group +;; INFO: Return type mismatch object vs symbol. +(defmethod needs-link? art-group ((obj art-group)) + (the-as + symbol + (and + (-> obj length) + (type-type? (-> obj data 0 type) art-joint-anim) + (!= + (-> obj name) + (-> (the-as art-joint-anim (-> obj data 0)) master-art-group-name) + ) + ) + ) + ) + +;; definition for method 10 of type art-group +;; INFO: Return type mismatch art-element vs joint. +(defmethod dummy-10 art-group ((obj art-group) (arg0 string) (arg1 type)) + (the-as joint (cond + (arg1 + (let ((s3-0 (+ (length (-> obj name)) 1))) + (dotimes (s2-0 (-> obj length)) + (if + (and + (-> obj data s2-0) + (= (-> obj data s2-0 type) arg1) + (or + (name= arg0 (-> obj data s2-0 name)) + (string-charp= + arg0 + (&-> (-> obj data s2-0 name) data s3-0) + ) + ) + ) + (return (the-as joint (-> obj data s2-0))) + ) + ) + ) + (the-as art-element #f) + ) + (else + (dotimes (s4-1 (-> obj length)) + (if + (and + (-> obj data s4-1) + (name= arg0 (-> obj data s4-1 name)) + ) + (return (the-as joint (-> obj data s4-1))) + ) + ) + (the-as art-element #f) + ) + ) + ) + ) + +;; definition for method 11 of type art-group +(defmethod dummy-11 art-group ((obj art-group) (arg0 string) (arg1 type)) + (cond + (arg1 + (let ((s3-0 (+ (length (-> obj name)) 1))) + (dotimes (s2-0 (-> obj length)) + (if + (and + (-> obj data s2-0) + (= (-> obj data s2-0 type) arg1) + (or + (name= arg0 (-> obj data s2-0 name)) + (string-charp= arg0 (&-> (-> obj data s2-0 name) data s3-0)) + ) + ) + (return s2-0) + ) + ) + ) + (the-as int #f) + ) + (else + (dotimes (s4-1 (-> obj length)) + (if (and (-> obj data s4-1) (name= arg0 (-> obj data s4-1 name))) + (return s4-1) + ) + ) + (the-as int #f) + ) + ) + ) + +;; definition for method 9 of type art-group +(defmethod login art-group ((obj art-group)) + (dotimes (s5-0 (-> obj length)) + (if (-> obj data s5-0) + (set! (-> obj data s5-0) (login (-> obj data s5-0))) + ) + ) + obj + ) + +;; definition for method 8 of type art-group +(defmethod + mem-usage + art-group + ((obj art-group) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 71 (-> arg0 length))) + (set! (-> arg0 data 70 name) "art-group") + (+! (-> arg0 data 70 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 70 used) v1-6) + (+! (-> arg0 data 70 total) (logand -16 (+ v1-6 15))) + ) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) + (dotimes (s3-0 (-> obj length)) + (if (-> obj data s3-0) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + ) + obj + ) + +;; definition for method 7 of type art-group +;; INFO: Return type mismatch art-group vs none. +(defmethod + relocate + art-group + ((obj art-group) (arg0 kheap) (arg1 (pointer uint8))) + (let ((s4-0 (clear *temp-string*))) + (string<-charp s4-0 arg1) + (set! obj (cond + ((not obj) + (format 0 "ERROR: art-group ~A is not a valid file.~%" s4-0) + (the-as art-group #f) + ) + ((not (type-type? (-> obj type) art-group)) + (format 0 "ERROR: art-group ~A is not a art-group.~%" s4-0) + (the-as art-group #f) + ) + ((not + (file-info-correct-version? + (-> obj info) + (file-kind art-group) + 0 + ) + ) + (the-as art-group #f) + ) + (else + (let ((s5-1 (-> *level* loading-level))) + (if (or (not s5-1) (= (-> s5-1 name) 'default)) + (login obj) + ) + (if s5-1 + (set-loaded-art (-> s5-1 art-group) obj) + ) + ) + obj + ) + ) + ) + ) + (none) + ) + +;; definition for method 5 of type art-mesh-geo +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of art-mesh-geo ((obj art-mesh-geo)) + (the-as int (+ (-> art size) (* (-> obj length) 4))) + ) + +;; definition for method 8 of type art-mesh-geo +(defmethod + mem-usage + art-mesh-geo + ((obj art-mesh-geo) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 73 (-> arg0 length))) + (set! (-> arg0 data 72 name) "art-mesh-geo") + (+! (-> arg0 data 72 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 72 used) v1-6) + (+! (-> arg0 data 72 total) (logand -16 (+ v1-6 15))) + ) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) + +;; definition for method 9 of type art-mesh-geo +;; WARN: Type Propagation failed: Failed type prop at op 20 ((set! v1 (l.h (+ s4 6)))): Could not get type of load: (set! v1 (l.h (+ s4 6))). +;; WARN: Type Propagation failed: Type analysis failed +(defmethod login art-mesh-geo ((a0-0 art-mesh-geo)) + (local-vars + (v0-0 none) + (v0-1 art-mesh-geo) + (v1-0 int) + (v1-1 int) + (v1-2 none) + (v1-3 none) + (v1-4 none) + (v1-6 none) + (v1-7 none) + (v1-8 none) + (v1-10 none) + (v1-13 int) + (a0-1 none) + (s3-0 int) + (s4-0 basic) + (s5-0 int) + (t9-0 none) + ) + (set! s5-0 0) + (while (begin + (set! v1-13 (-> a0-0 length)) + (<.si s5-0 v1-13) + ) + (set! v1-0 (sll s5-0 2)) + (set! v1-1 (+ v1-0 a0-0)) + (set! s4-0 (dynamic-array-field-access v1-1 data PLACEHOLDER)) + (set! s3-0 0) + (while (begin + (set! v1-10 (the-as none (l.h (+ s4-0 6)))) + (<.si s3-0 v1-10) + ) + (when (begin + (set! v1-2 (the-as none (sll s3-0 2))) + (set! v1-3 (the-as none (+ v1-2 s4-0))) + (set! v1-4 (the-as none (l.wu (+ v1-3 8)))) + v1-4 + ) + (set! v1-6 (the-as none (sll s3-0 2))) + (set! v1-7 (the-as none (+ v1-6 s4-0))) + (set! a0-1 (the-as none (l.wu (+ v1-7 8)))) + (set! v1-8 (the-as none (l.wu (+ a0-1 -4)))) + (set! t9-0 (the-as none (l.wu (+ v1-8 52)))) + (call!) + (set! v1-9 (the-as none v0-0)) + ) + (set! s3-0 (the-as int (+ s3-0 1))) + ) + (set! s5-0 (the-as int (+ s5-0 1))) + ) + (set! v0-1 a0-0) + (ret-value v0-1) + ) + +;; definition for method 9 of type art-joint-anim +(defmethod login art-joint-anim ((obj art-joint-anim)) + (if (and (-> obj extra) (zero? (-> obj extra tag))) + (set! (-> obj extra tag) (the-as (pointer res-tag) (-> obj extra trans))) + ) + obj + ) + +;; definition for method 5 of type art-joint-geo +;; INFO: Return type mismatch uint vs int. +(defmethod asize-of art-joint-geo ((obj art-joint-geo)) + (the-as int (+ (-> art size) (* (-> obj length) 4))) + ) + +;; definition for method 10 of type art-joint-geo +(defmethod dummy-10 art-joint-geo ((obj art-joint-geo) (arg0 string) (arg1 type)) + (cond + (arg1 + (dotimes (s3-0 (-> obj length)) + (if + (and + (= (-> obj data s3-0 type) arg1) + (name= arg0 (-> obj data s3-0 name)) + ) + (return (-> obj data s3-0)) + ) + ) + (the-as joint #f) + ) + (else + (dotimes (s4-1 (-> obj length)) + (if (name= arg0 (-> obj data s4-1 name)) + (return (-> obj data s4-1)) + ) + ) + (the-as joint #f) + ) + ) + ) + +;; definition for method 11 of type art-joint-geo +(defmethod dummy-11 art-joint-geo ((obj art-joint-geo) (arg0 string) (arg1 type)) + (cond + (arg1 + (dotimes (s3-0 (-> obj length)) + (if + (and + (= (-> obj data s3-0 type) arg1) + (name= arg0 (-> obj data s3-0 name)) + ) + (return s3-0) + ) + ) + (the-as int #f) + ) + (else + (dotimes (s4-1 (-> obj length)) + (if (name= arg0 (-> obj data s4-1 name)) + (return s4-1) + ) + ) + (the-as int #f) + ) + ) + ) + +;; definition for method 8 of type art-joint-geo +(defmethod + mem-usage + art-joint-geo + ((obj art-joint-geo) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg0 length) (max 74 (-> arg0 length))) + (set! (-> arg0 data 73 name) "art-joint-geo") + (+! (-> arg0 data 73 count) 1) + (let ((v1-6 (asize-of obj))) + (+! (-> arg0 data 73 used) v1-6) + (+! (-> arg0 data 73 total) (logand -16 (+ v1-6 15))) + ) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) + +;; definition for function joint-control-channel-eval +(defun joint-control-channel-eval ((arg0 joint-control-channel)) + (let ((f0-2 ((-> arg0 num-func) arg0 (-> arg0 param 0) (-> arg0 param 1)))) + (set! (-> arg0 eval-time) (the-as uint (-> *display* base-frame-counter))) + f0-2 + ) + ) + +;; definition for function joint-control-channel-eval! +(defun + joint-control-channel-eval! + ((arg0 joint-control-channel) + (arg1 (function joint-control-channel float float float)) + ) + (set! (-> arg0 num-func) arg1) + (let ((f0-2 (arg1 arg0 (-> arg0 param 0) (-> arg0 param 1)))) + (set! (-> arg0 eval-time) (the-as uint (-> *display* base-frame-counter))) + f0-2 + ) + ) + +;; definition for function joint-control-channel-group-eval! +(defun + joint-control-channel-group-eval! + ((arg0 joint-control-channel) + (arg1 art-joint-anim) + (arg2 (function joint-control-channel float float float)) + ) + (set! (-> arg0 num-func) arg2) + (cond + ((= (-> arg0 command) 'stack) + ) + (else + (if arg1 + (set! (-> arg0 frame-group) arg1) + ) + (arg2 arg0 (-> arg0 param 0) (-> arg0 param 1)) + (set! (-> arg0 eval-time) (the-as uint (-> *display* base-frame-counter))) + ) + ) + 0 + ) + +;; definition for function joint-control-channel-group! +(defun + joint-control-channel-group! + ((arg0 joint-control-channel) + (arg1 art-joint-anim) + (arg2 (function joint-control-channel float float float)) + ) + (set! (-> arg0 num-func) arg2) + (cond + ((= (-> arg0 command) 'stack) + ) + (arg1 + (set! (-> arg0 frame-group) arg1) + ) + ) + 0 + ) + +;; definition for function joint-control-copy! +(defun joint-control-copy! ((arg0 joint-control) (arg1 joint-control)) + (set! (-> arg0 blend-index) (-> arg1 blend-index)) + (set! (-> arg0 active-channels) (-> arg1 active-channels)) + (set! + (-> arg0 root-channel) + (the-as + (inline-array joint-control-channel) + (-> + arg0 + channel + (/ + (&- + (the-as pointer (-> arg1 root-channel)) + (the-as uint (the-as pointer (-> arg1 channel))) + ) + 48 + ) + ) + ) + ) + (mem-copy! + (the-as pointer (-> arg0 channel)) + (the-as pointer (-> arg1 channel)) + (* 48 (-> arg0 allocated-length)) + ) + (dotimes (v1-7 (-> arg0 allocated-length)) + (set! (-> arg0 channel v1-7 parent) arg0) + ) + arg0 + ) + +;; definition for function joint-control-remap! +;; INFO: Return type mismatch symbol vs object. +;; Used lq/sq +(defun + joint-control-remap! + ((arg0 joint-control) + (arg1 art-group) + (arg2 art-group) + (arg3 pair) + (arg4 int) + (arg5 string) + ) + (local-vars + (sv-16 int) + (sv-24 symbol) + (sv-32 int) + (sv-40 int) + (sv-48 joint-control-channel) + (sv-52 object) + (sv-56 int) + (sv-64 joint) + (sv-80 string) + ) + (set! sv-16 (+ (length (-> arg2 name)) 1)) + (set! sv-24 #t) + (set! sv-32 arg4) + (set! sv-40 2) + (while + (and + (< sv-40 (-> arg1 length)) + (!= (-> arg1 data sv-40 type) art-joint-anim) + ) + (set! sv-40 (+ sv-40 1)) + ) + (dotimes (s2-1 (-> arg0 active-channels)) + (set! sv-48 (-> arg0 channel s2-1)) + (when (-> sv-48 frame-group) + (format + (clear *temp-string*) + "~S~G" + arg5 + (&+ (-> sv-48 frame-group name data) sv-16) + ) + (when (not (null? arg3)) + (set! sv-52 (nassoc *temp-string* arg3)) + (when sv-52 + (let ((s1-1 sv-32) + (a0-9 sv-52) + ) + (set! + sv-56 + (mod s1-1 (+ ((method-of-type (rtype-of a0-9) length) a0-9) -1)) + ) + ) + (let ((s1-2 format) + (s0-0 (clear *temp-string*)) + ) + (set! sv-80 "~S") + (let ((a2-2 (ref sv-52 (+ sv-56 1)))) + (s1-2 s0-0 sv-80 a2-2) + ) + ) + ) + ) + (set! sv-64 (dummy-10 arg1 *temp-string* art-joint-anim)) + (cond + (sv-64 + (set! (-> sv-48 frame-group) (the-as art-joint-anim sv-64)) + ) + (else + (set! (-> sv-48 frame-group) (the-as art-joint-anim (-> arg1 data sv-40))) + (set! (-> sv-48 frame-num) 0.0) + (set! sv-24 (the-as symbol #f)) + ) + ) + ) + ) + (the-as object sv-24) + ) + +;; definition for function flatten-joint-control-to-spr +;; WARN: Type Propagation failed: Failed type prop at op 190 ((set! f0 (l.f (+ a0 2416)))): Could not get type of load: (set! f0 (l.f (+ a0 2416))). +;; WARN: Type Propagation failed: Type analysis failed +;; Used lq/sq +(defun flatten-joint-control-to-spr ((a0-0 joint-control)) + (local-vars + (v0-0 none) + (v0-1 int) + (v1-0 int) + (v1-3 none) + (v1-4 none) + (v1-6 none) + (v1-7 none) + (v1-8 none) + (v1-9 none) + (v1-10 none) + (v1-15 none) + (v1-16 none) + (v1-17 none) + (v1-18 none) + (v1-23 int) + (v1-24 int) + (a0-1 int) + (a0-2 none) + (a0-3 none) + (a0-4 none) + (a0-5 none) + (a0-6 none) + (a0-7 none) + (a0-8 none) + (a0-9 none) + (a0-10 none) + (a0-11 none) + (a0-12 none) + (a0-13 none) + (a0-14 none) + (a0-15 none) + (a0-16 int) + (a0-17 int) + (a0-18 none) + (a0-19 none) + (a0-20 none) + (a1-0 int) + (a1-1 none) + (a1-2 none) + (a1-3 none) + (a1-4 none) + (a1-5 int) + (a2-0 none) + (a2-1 none) + (a2-2 none) + (a2-3 none) + (a2-4 none) + (a2-5 none) + (a2-6 none) + (a2-7 none) + (a2-8 none) + (a3-0 none) + (t0-0 none) + (t0-2 none) + (t0-3 none) + (t0-4 none) + (t0-6 none) + (t1-0 none) + (s0-0 none) + (s1-0 none) + (s2-0 none) + (s3-0 int) + (s4-0 int) + (s5-0 int) + (t9-0 none) + (f0-0 float) + (f0-1 none) + (f0-2 none) + (f0-3 none) + (f0-4 none) + (f0-5 none) + (f1-0 none) + (f1-1 none) + (f1-2 none) + (f1-3 none) + (f1-4 none) + (f1-5 none) + (f1-6 none) + (f2-0 none) + (f2-1 none) + (f2-2 none) + (f30-0 none) + ) + (rlet ((vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + ) + (set! s5-0 (-> a0-0 active-channels)) + (set! f0-0 1.0) + (set! v1-0 0) + (set! a1-0 #x70000970) + (set! a0-1 0) + (while (<.si a0-1 s5-0) + (cond + ((begin + (set! a2-0 (the-as none 48)) + (set! a2-1 (the-as none (*.si a2-0 a0-1))) + (set! a2-2 (the-as none (+ a2-1 44))) + (set! a2-3 (the-as none (+ a2-2 a0-0))) + (set! a3-0 (the-as none (l.wu (+ a2-3 4)))) + (set! t0-0 (the-as none 'push)) + (= a3-0 t0-0) + ) + (set! a2-4 (the-as none (+ a1-0 v1-0))) + (s.q! a1-0 0) + (s.q! (+ a1-0 16) 0) + (s.q! (+ a1-0 32) 0) + (s.q! (+ a1-0 48) 0) + (s.q! (+ a1-0 64) 0) + (s.q! (+ a1-0 80) 0) + (s.f! a2-4 f0-0) + (set! a1-0 (the-as int (+ a1-0 96))) + (set! a3-1 (the-as none a1-0)) + ) + ((begin + (or (begin + (set! t0-2 (the-as none 'blend)) + (set! t1-0 (the-as none (= a3-0 t0-2))) + t1-0 + ) + (begin + (set! t0-4 (the-as none 'push1)) + (set! t0-3 (the-as none (= a3-0 t0-4))) + ) + ) + t0-3 + ) + (set! f1-0 (the-as none (l.f (+ a2-3 8)))) + (set! f2-0 (the-as none (-.s f0-0 f1-0))) + (set! a2-5 (the-as none (fpr->gpr f2-0))) + (.mov vf1 a2-5) + (set! a1-1 (the-as none (+ a1-0 -96))) + (.lvf vf2 a1-1) + (set! a2-6 (the-as none (+ a1-1 v1-0))) + (.lvf vf3 (+ a1-1 16)) + (.lvf vf4 (+ a1-1 32)) + (.lvf vf5 (+ a1-1 48)) + (.lvf vf6 (+ a1-1 64)) + (.lvf vf7 (+ a1-1 80)) + (.mul.x.vf vf2 vf2 vf1) + (.mul.x.vf vf3 vf3 vf1) + (.mul.x.vf vf4 vf4 vf1) + (.mul.x.vf vf5 vf5 vf1) + (.mul.x.vf vf6 vf6 vf1) + (.mul.x.vf vf7 vf7 vf1) + (s.vf! a1-1 vf2) + (s.vf! (+ a1-1 16) vf3) + (s.vf! (+ a1-1 32) vf4) + (s.vf! (+ a1-1 48) vf5) + (s.vf! (+ a1-1 64) vf6) + (s.vf! (+ a1-1 80) vf7) + (set! f2-1 (the-as none (l.f a2-6))) + (set! f1-1 (the-as none (+.s f2-1 f1-0))) + (s.f! a2-6 f1-1) + (set! a1-0 (the-as int (+ a1-1 96))) + (set! a3-2 (the-as none a1-0)) + ) + ((begin + (set! t0-6 (the-as none 'stack)) + (= a3-0 t0-6) + ) + (set! f2-2 (the-as none (l.f (+ a2-3 8)))) + (set! f1-2 (the-as none (-.s f0-0 f2-2))) + (set! a1-2 (the-as none (+ a1-0 -192))) + (set! a2-7 (the-as none (fpr->gpr f2-2))) + (.mov vf1 a2-7) + (set! a2-8 (the-as none (fpr->gpr f1-2))) + (.mov vf2 a2-8) + (.lvf vf3 a1-2) + (.lvf vf4 (+ a1-2 16)) + (.lvf vf5 (+ a1-2 32)) + (.lvf vf6 (+ a1-2 48)) + (.lvf vf7 (+ a1-2 64)) + (.lvf vf8 (+ a1-2 80)) + (.mul.x.vf vf3 vf3 vf2) + (.mul.x.vf vf4 vf4 vf2) + (.mul.x.vf vf5 vf5 vf2) + (.mul.x.vf vf6 vf6 vf2) + (.mul.x.vf vf7 vf7 vf2) + (.mul.x.vf vf8 vf8 vf2) + (.lvf vf9 (+ a1-2 96)) + (.lvf vf10 (+ a1-2 112)) + (.lvf vf11 (+ a1-2 128)) + (.lvf vf12 (+ a1-2 144)) + (.lvf vf13 (+ a1-2 160)) + (.lvf vf14 (+ a1-2 176)) + (.mul.x.vf vf9 vf9 vf1) + (.mul.x.vf vf10 vf10 vf1) + (.mul.x.vf vf11 vf11 vf1) + (.mul.x.vf vf12 vf12 vf1) + (.mul.x.vf vf13 vf13 vf1) + (.mul.x.vf vf14 vf14 vf1) + (.add.vf vf3 vf3 vf9) + (.add.vf vf4 vf4 vf10) + (.add.vf vf5 vf5 vf11) + (.add.vf vf6 vf6 vf12) + (.add.vf vf7 vf7 vf13) + (.add.vf vf8 vf8 vf14) + (s.vf! a1-2 vf3) + (s.vf! (+ a1-2 16) vf4) + (s.vf! (+ a1-2 32) vf5) + (s.vf! (+ a1-2 48) vf6) + (s.vf! (+ a1-2 64) vf7) + (s.vf! (+ a1-2 80) vf8) + (set! a1-0 (the-as int (+ a1-2 96))) + (set! a3-4 (the-as none a1-0)) + ) + ) + (set! v1-0 (the-as int (+ v1-0 4))) + (set! a0-1 (the-as int (+ a0-1 1))) + ) + (set! s4-0 0) + (set! s3-0 0) + (while (<.si s3-0 s5-0) + (when (begin + (set! f0-1 (the-as none 0.001)) + (set! v1-3 (the-as none (sll s3-0 2))) + (set! a0-2 (the-as none #x70000000)) + (set! v1-4 (the-as none (+ v1-3 a0-2))) + (set! f1-3 (the-as none (l.f (+ v1-4 2416)))) + (<.s f0-1 f1-3) + ) + (when (begin + (when (begin + (set! v1-6 (the-as none 48)) + (set! v1-7 (the-as none (*.si v1-6 s3-0))) + (set! v1-8 (the-as none (+ v1-7 44))) + (set! v1-9 (the-as none (+ v1-8 a0-0))) + (set! a0-3 (the-as none (l.wu (+ v1-9 12)))) + (set! s2-0 (the-as none (l.wu (+ a0-3 40)))) + (set! f0-2 (the-as none (l.f (+ v1-9 16)))) + (set! f1-4 (the-as none (f2i f0-2))) + (set! s1-0 (the-as none (fpr->gpr f1-4))) + (set! f1-5 (the-as none (gpr->fpr s1-0))) + (set! f1-6 (the-as none (i2f f1-5))) + (set! f30-0 (the-as none (-.s f0-2 f1-6))) + (set! a0-4 (the-as none (l.wu s2-0))) + (set! s0-0 (the-as none (+ a0-4 -1))) + (set! v1-10 (the-as none (l.wu (+ v1-9 12)))) + (not v1-10) + ) + (set! t9-0 (the-as none format)) + (set! a0-5 (the-as none 0)) + (set! a1-3 (the-as none L223)) + (set! a2-9 (the-as none s3-0)) + (set! a3-5 (the-as none a0-0)) + (call!) + (set! v1-12 (the-as none v0-0)) + ) + (>=.si s1-0 s0-0) + ) + (set! f30-0 (the-as none 0)) + (set! s1-0 (the-as none s0-0)) + (set! v1-14 (the-as none s1-0)) + ) + (cond + ((begin + (set! v1-15 (the-as none 24)) + (set! v1-16 (the-as none (*.si v1-15 s4-0))) + (set! v1-17 (the-as none (+ v1-16 1824))) + (set! a0-6 (the-as none #x70000000)) + (set! v1-18 (the-as none (+ v1-17 a0-6))) + (set! a0-7 (the-as none (l.wu (+ s2-0 12)))) + (s.w! v1-18 a0-7) + (set! a0-8 (the-as none (l.wu (+ s2-0 4)))) + (s.w! (+ v1-18 4) a0-8) + (set! a0-9 (the-as none (sll s1-0 2))) + (set! a0-10 (the-as none (+ a0-9 s2-0))) + (set! a0-11 (the-as none (l.wu (+ a0-10 16)))) + (s.w! (+ v1-18 8) a0-11) + (set! f0-3 (the-as none 0)) + (=.s f30-0 f0-3) + ) + (set! a0-12 (the-as none (l.wu (+ s2-0 8)))) + ) + (else + (set! a0-13 (the-as none (l.wu (+ s2-0 8)))) + (set! a0-12 (the-as none (sll a0-13 1))) + ) + ) + (s.w! (+ v1-18 12) a0-12) + (set! a0-14 (the-as none (sll s3-0 2))) + (set! a1-4 (the-as none #x70000000)) + (set! a0-15 (the-as none (+ a0-14 a1-4))) + (set! f0-4 (the-as none (l.f (+ a0-15 2416)))) + (s.f! (+ v1-18 16) f0-4) + (s.f! (+ v1-18 20) f30-0) + (set! v1-19 (the-as none (fpr->gpr f30-0))) + (set! s4-0 (the-as int (+ s4-0 1))) + (set! v1-20 (the-as none s4-0)) + ) + (set! s3-0 (the-as int (+ s3-0 1))) + ) + (set! v1-23 #x70000000) + (s.w! (+ v1-23 2400) s4-0) + (set! v1-24 0) + (while (<.si v1-24 s5-0) + (set! a0-16 (sll v1-24 2)) + (set! a1-5 #x70000000) + (set! a0-17 (+ a0-16 a1-5)) + (set! f0-5 (the-as none (l.f (+ a0-17 2416)))) + (set! a0-18 (the-as none 48)) + (set! a0-19 (the-as none (*.si a0-18 v1-24))) + (set! a0-20 (the-as none (+ a0-0 a0-19))) + (s.f! (+ a0-20 88) f0-5) + (set! v1-24 (the-as int (+ v1-24 1))) + ) + (set! v0-1 0) + (ret-value v0-1) + ) + ) + +;; definition for function matrix-from-joint-anim-frame +;; INFO: Return type mismatch object vs matrix. +(defun + matrix-from-joint-anim-frame + ((arg0 joint-anim-compressed-control) (arg1 int) (arg2 int)) + (let ((v1-1 (the-as object (-> arg0 fixed data))) + (v0-0 (the-as object (-> arg0 data arg2 data))) + ) + (cond + ((zero? (logand (-> arg0 fixed hdr matrix-bits) 1)) + (set! v1-1 (cond + ((zero? arg1) + (return (the-as matrix v1-1)) + v1-1 + ) + (else + (-> (the-as (inline-array vector) v1-1) 4) + ) + ) + ) + ) + ((zero? arg1) + (return (the-as matrix v0-0)) + ) + (else + (set! v0-0 (-> (the-as (inline-array vector) v0-0) 4)) + ) + ) + (if (zero? (logand (-> arg0 fixed hdr matrix-bits) 2)) + (return (the-as matrix v1-1)) + ) + (the-as matrix v0-0) + ) + ) + +;; definition for function matrix-from-control-channel! +;; Used lq/sq +(defun + matrix-from-control-channel! + ((arg0 matrix) (arg1 joint) (arg2 joint-control-channel)) + (let ((s4-0 (-> arg2 frame-group)) + (s5-0 (-> arg1 number)) + ) + (if (>= s5-0 2) + (format 0 "ERROR: Call to matrix-from-control-channel! on joint ~D~%" s5-0) + ) + (let* + ((f30-0 + (fmax + 0.0 + (fmin (-> arg2 frame-num) (the float (+ (-> s4-0 data 0 length) -1))) + ) + ) + (f0-1 f30-0) + ) + (cond + ((= (the float (the int f0-1)) f0-1) + (let* + ((a2-3 + (matrix-from-joint-anim-frame (-> s4-0 frames) s5-0 (the int f30-0)) + ) + (v1-7 (-> a2-3 vector 0 quad)) + (a0-3 (-> a2-3 vector 1 quad)) + (a1-3 (-> a2-3 vector 2 quad)) + (a2-4 (-> a2-3 vector 3 quad)) + ) + (set! (-> arg0 vector 0 quad) v1-7) + (set! (-> arg0 vector 1 quad) a0-3) + (set! (-> arg0 vector 2 quad) a1-3) + (set! (-> arg0 vector 3 quad) a2-4) + ) + arg0 + ) + (else + (let + ((s3-1 + (matrix-from-joint-anim-frame (-> s4-0 frames) s5-0 (the int f30-0)) + ) + (a2-7 + (matrix-from-joint-anim-frame + (-> s4-0 frames) + s5-0 + (+ (the int f30-0) 1) + ) + ) + (f0-9 (- f30-0 (the float (the int f30-0)))) + ) + (matrix-lerp! arg0 s3-1 a2-7 f0-9) + ) + ) + ) + ) + ) + ) + +;; definition for function matrix-from-control-pair! +(defun matrix-from-control-pair! ((arg0 matrix) (arg1 matrix) (arg2 joint)) + (let ((f30-0 (-> arg1 vector 0 z))) + (cond + ((>= 0.0 f30-0) + (empty) + arg0 + ) + ((>= f30-0 1.0) + (matrix-from-control-channel! + arg0 + arg2 + (the-as joint-control-channel arg1) + ) + ) + (else + (let + ((a2-3 + (matrix-from-control-channel! + (the-as matrix (+ 16 #x70000000)) + arg2 + (the-as joint-control-channel arg1) + ) + ) + ) + (matrix-lerp! arg0 arg0 a2-3 f30-0) + ) + ) + ) + ) + ) + +;; definition for function matrix-from-control! +;; INFO: Return type mismatch (inline-array matrix) vs matrix. +;; Used lq/sq +(defun + matrix-from-control! + ((arg0 matrix-stack) (arg1 joint) (arg2 joint-control) (arg3 symbol)) + (set! (-> arg0 top) (the-as matrix (-> arg0 data))) + (dotimes (s2-0 (-> arg2 active-channels)) + (let* ((a2-1 (-> arg2 channel s2-0)) + (v1-4 (-> a2-1 command)) + (s1-0 64) + ) + (cond + ((and (= arg3 'no-push) (= v1-4 'push1)) + (matrix-from-control-channel! + (the-as matrix (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + arg1 + a2-1 + ) + ) + ((and (= arg3 'no-push) (= v1-4 'stack)) + (set! + (-> arg0 top) + (the-as matrix (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + ) + (let* + ((v1-10 + (the-as matrix (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + ) + (a3-1 (-> arg0 top)) + (a0-10 (-> a3-1 vector 0 quad)) + (a1-4 (-> a3-1 vector 1 quad)) + (a2-2 (-> a3-1 vector 2 quad)) + (a3-2 (-> a3-1 vector 3 quad)) + ) + (set! (-> v1-10 vector 0 quad) a0-10) + (set! (-> v1-10 vector 1 quad) a1-4) + (set! (-> v1-10 vector 2 quad) a2-2) + (set! (-> v1-10 vector 3 quad) a3-2) + ) + ) + ((= v1-4 'push) + (matrix-from-control-channel! (-> arg0 top) arg1 a2-1) + (set! (-> arg0 top) (the-as matrix (+ (the-as uint (-> arg0 top)) s1-0))) + ) + ((or (= v1-4 'blend) (= v1-4 'push1)) + (matrix-from-control-pair! + (the-as matrix (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + (the-as matrix a2-1) + arg1 + ) + ) + ((= v1-4 'stack) + (set! + (-> arg0 top) + (the-as matrix (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + ) + (let ((a1-8 (&- (the-as pointer (-> arg0 top)) (the-as uint s1-0))) + (v1-19 (-> arg0 top)) + (f0-0 (-> a2-1 frame-interp)) + ) + (matrix-lerp! (the-as matrix a1-8) (the-as matrix a1-8) v1-19 f0-0) + ) + ) + ) + ) + ) + (the-as matrix (-> arg0 data)) + ) + +;; definition for method 9 of type cspace +(defmethod dummy-9 cspace ((obj cspace) (arg0 basic)) + (set! (-> obj parent) #f) + (set! (-> obj joint) #f) + (set! (-> obj geo) arg0) + (set! (-> obj param0) #f) + (set! (-> obj param1) #f) + (set! (-> obj param2) #f) + obj + ) + +;; definition for method 0 of type cspace +(defmethod new cspace ((allocation symbol) (type-to-make type) (arg0 basic)) + (let ((t9-0 (method-of-type structure new)) + (v1-1 type-to-make) + ) + (-> type-to-make size) + ((method-of-type cspace dummy-9) (the-as cspace (t9-0 allocation v1-1)) arg0) + ) + ) + +;; definition for function cspace<-cspace! +;; Used lq/sq +(defun cspace<-cspace! ((arg0 cspace) (arg1 cspace)) + (let ((v0-0 (-> arg0 bone transform))) + (let* ((a2-0 (-> arg1 bone transform)) + (v1-2 (-> a2-0 vector 0 quad)) + (a0-1 (-> a2-0 vector 1 quad)) + (a1-1 (-> a2-0 vector 2 quad)) + (a2-1 (-> a2-0 vector 3 quad)) + ) + (set! (-> v0-0 vector 0 quad) v1-2) + (set! (-> v0-0 vector 1 quad) a0-1) + (set! (-> v0-0 vector 2 quad) a1-1) + (set! (-> v0-0 vector 3 quad) a2-1) + ) + v0-0 + ) + ) + +;; definition for function cspace<-rot-yxy! +;; ERROR: function has no type analysis. Cannot decompile. + +;; definition for function cspace<-transform-yxy! +;; ERROR: function has no type analysis. Cannot decompile. + +;; definition for function cspace<-transformq! +(defun cspace<-transformq! ((arg0 cspace) (arg1 transformq)) + (matrix<-transformq! (-> arg0 bone transform) arg1) + ) + +;; definition for function cspace<-transformq+trans! +(defun cspace<-transformq+trans! ((arg0 cspace) (arg1 transformq) (arg2 vector)) + (matrix<-transformq+trans! (-> arg0 bone transform) arg1 arg2) + ) + +;; definition for function cspace<-transformq+world-trans! +(defun + cspace<-transformq+world-trans! + ((arg0 cspace) (arg1 transformq) (arg2 vector)) + (matrix<-transformq+world-trans! (-> arg0 bone transform) arg1 arg2) + ) + +;; definition for function cspace-calc-total-matrix! +(defun cspace-calc-total-matrix! ((arg0 cspace) (arg1 matrix)) + (matrix*! arg1 (-> arg0 bone transform) (-> *math-camera* camera-temp)) + ) + +;; definition for function cspace<-matrix-no-push-joint! +;; Used lq/sq +(defun cspace<-matrix-no-push-joint! ((arg0 cspace) (arg1 joint-control)) + (let + ((v1-2 + (matrix-from-control! + (the-as matrix-stack (+ 80 #x70000000)) + (-> arg0 joint) + arg1 + 'no-push + ) + ) + (v0-1 (-> arg0 bone transform)) + ) + (let ((a0-4 (-> v1-2 vector 0 quad)) + (a1-2 (-> v1-2 vector 1 quad)) + (a2-1 (-> v1-2 vector 2 quad)) + (v1-3 (-> v1-2 vector 3 quad)) + ) + (set! (-> v0-1 vector 0 quad) a0-4) + (set! (-> v0-1 vector 1 quad) a1-2) + (set! (-> v0-1 vector 2 quad) a2-1) + (set! (-> v0-1 vector 3 quad) v1-3) + ) + v0-1 + ) + ) + +;; definition for function cspace<-matrix-joint! +;; Used lq/sq +(defun cspace<-matrix-joint! ((arg0 cspace) (arg1 matrix)) + (let ((v0-0 (-> arg0 bone transform))) + (let* ((a2-0 arg1) + (v1-1 (-> a2-0 vector 0 quad)) + (a0-1 (-> a2-0 vector 1 quad)) + (a1-1 (-> a2-0 vector 2 quad)) + (a2-1 (-> a2-0 vector 3 quad)) + ) + (set! (-> v0-0 vector 0 quad) v1-1) + (set! (-> v0-0 vector 1 quad) a0-1) + (set! (-> v0-0 vector 2 quad) a1-1) + (set! (-> v0-0 vector 3 quad) a2-1) + ) + v0-0 + ) + ) + +;; definition for function cspace<-parented-matrix-joint! +(defun cspace<-parented-matrix-joint! ((arg0 cspace) (arg1 matrix)) + (matrix*! (-> arg0 bone transform) arg1 (-> arg0 parent bone transform)) + ) + +;; definition for function cspace<-parented-transformq-joint! +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function clear-frame-accumulator +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function normalize-frame-quaternions +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function decompress-fixed-data-to-accumulator +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function decompress-frame-data-to-accumulator +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function decompress-frame-data-pair-to-accumulator +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function make-joint-jump-tables +(defun make-joint-jump-tables () + (let ((v1-1 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 108 4))) + (a0-2 #x70000000) + ) + (s.w! (+ a0-2 1632) v1-1) + ) + (let ((v1-3 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) + (a0-5 #x70000000) + ) + (s.w! (+ a0-5 1636) v1-3) + ) + (let ((v1-5 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 233 4))) + (a0-8 #x70000000) + ) + (s.w! (+ a0-8 1640) v1-5) + ) + (let ((v1-7 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) + (a0-11 #x70000000) + ) + (s.w! (+ a0-11 1644) v1-7) + ) + (let ((v1-9 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 301 4))) + (a0-14 #x70000000) + ) + (s.w! (+ a0-14 1648) v1-9) + ) + (let ((v1-11 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) + (a0-17 #x70000000) + ) + (s.w! (+ a0-17 1652) v1-11) + ) + (let ((v1-13 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 387 4))) + (a0-20 #x70000000) + ) + (s.w! (+ a0-20 1656) v1-13) + ) + (let ((v1-15 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) + (a0-23 #x70000000) + ) + (s.w! (+ a0-23 1660) v1-15) + ) + (let ((v1-17 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 155 4))) + (a0-26 #x70000000) + ) + (s.w! (+ a0-26 1664) v1-17) + ) + (let ((v1-19 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) + (a0-29 #x70000000) + ) + (s.w! (+ a0-29 1668) v1-19) + ) + (let ((v1-21 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 261 4))) + (a0-32 #x70000000) + ) + (s.w! (+ a0-32 1672) v1-21) + ) + (let ((v1-23 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) + (a0-35 #x70000000) + ) + (s.w! (+ a0-35 1676) v1-23) + ) + (let ((v1-25 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 335 4))) + (a0-38 #x70000000) + ) + (s.w! (+ a0-38 1680) v1-25) + ) + (let ((v1-27 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) + (a0-41 #x70000000) + ) + (s.w! (+ a0-41 1684) v1-27) + ) + (let ((v1-29 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 402 4))) + (a0-44 #x70000000) + ) + (s.w! (+ a0-44 1688) v1-29) + ) + (let ((v1-31 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) + (a0-47 #x70000000) + ) + (s.w! (+ a0-47 1692) v1-31) + ) + (let ((v1-33 (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) + (a0-50 #x70000000) + ) + (s.w! (+ a0-50 1696) v1-33) + ) + (let ((v1-35 (+ (the-as uint decompress-frame-data-to-accumulator) (* 92 4))) + (a0-53 #x70000000) + ) + (s.w! (+ a0-53 1700) v1-35) + ) + (let ((v1-37 (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) + (a0-56 #x70000000) + ) + (s.w! (+ a0-56 1704) v1-37) + ) + (let ((v1-39 (+ (the-as uint decompress-frame-data-to-accumulator) (* 140 4))) + (a0-59 #x70000000) + ) + (s.w! (+ a0-59 1708) v1-39) + ) + (let ((v1-41 (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) + (a0-62 #x70000000) + ) + (s.w! (+ a0-62 1712) v1-41) + ) + (let ((v1-43 (+ (the-as uint decompress-frame-data-to-accumulator) (* 220 4))) + (a0-65 #x70000000) + ) + (s.w! (+ a0-65 1716) v1-43) + ) + (let ((v1-45 (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) + (a0-68 #x70000000) + ) + (s.w! (+ a0-68 1720) v1-45) + ) + (let ((v1-47 (+ (the-as uint decompress-frame-data-to-accumulator) (* 307 4))) + (a0-71 #x70000000) + ) + (s.w! (+ a0-71 1724) v1-47) + ) + (let ((v1-49 (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) + (a0-74 #x70000000) + ) + (s.w! (+ a0-74 1728) v1-49) + ) + (let ((v1-51 (+ (the-as uint decompress-frame-data-to-accumulator) (* 107 4))) + (a0-77 #x70000000) + ) + (s.w! (+ a0-77 1732) v1-51) + ) + (let ((v1-53 (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) + (a0-80 #x70000000) + ) + (s.w! (+ a0-80 1736) v1-53) + ) + (let ((v1-55 (+ (the-as uint decompress-frame-data-to-accumulator) (* 174 4))) + (a0-83 #x70000000) + ) + (s.w! (+ a0-83 1740) v1-55) + ) + (let ((v1-57 (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) + (a0-86 #x70000000) + ) + (s.w! (+ a0-86 1744) v1-57) + ) + (let ((v1-59 (+ (the-as uint decompress-frame-data-to-accumulator) (* 248 4))) + (a0-89 #x70000000) + ) + (s.w! (+ a0-89 1748) v1-59) + ) + (let ((v1-61 (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) + (a0-92 #x70000000) + ) + (s.w! (+ a0-92 1752) v1-61) + ) + (let ((v1-63 (+ (the-as uint decompress-frame-data-to-accumulator) (* 354 4))) + (a0-95 #x70000000) + ) + (s.w! (+ a0-95 1756) v1-63) + ) + (let + ((v1-65 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4)) + ) + (a0-98 #x70000000) + ) + (s.w! (+ a0-98 1760) v1-65) + ) + (let + ((v1-67 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 125 4)) + ) + (a0-101 #x70000000) + ) + (s.w! (+ a0-101 1764) v1-67) + ) + (let + ((v1-69 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4)) + ) + (a0-104 #x70000000) + ) + (s.w! (+ a0-104 1768) v1-69) + ) + (let + ((v1-71 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 197 4)) + ) + (a0-107 #x70000000) + ) + (s.w! (+ a0-107 1772) v1-71) + ) + (let + ((v1-73 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4)) + ) + (a0-110 #x70000000) + ) + (s.w! (+ a0-110 1776) v1-73) + ) + (let + ((v1-75 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 318 4)) + ) + (a0-113 #x70000000) + ) + (s.w! (+ a0-113 1780) v1-75) + ) + (let + ((v1-77 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4)) + ) + (a0-116 #x70000000) + ) + (s.w! (+ a0-116 1784) v1-77) + ) + (let + ((v1-79 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 459 4)) + ) + (a0-119 #x70000000) + ) + (s.w! (+ a0-119 1788) v1-79) + ) + (let + ((v1-81 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4)) + ) + (a0-122 #x70000000) + ) + (s.w! (+ a0-122 1792) v1-81) + ) + (let + ((v1-83 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 150 4)) + ) + (a0-125 #x70000000) + ) + (s.w! (+ a0-125 1796) v1-83) + ) + (let + ((v1-85 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4)) + ) + (a0-128 #x70000000) + ) + (s.w! (+ a0-128 1800) v1-85) + ) + (let + ((v1-87 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 248 4)) + ) + (a0-131 #x70000000) + ) + (s.w! (+ a0-131 1804) v1-87) + ) + (let + ((v1-89 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4)) + ) + (a0-134 #x70000000) + ) + (s.w! (+ a0-134 1808) v1-89) + ) + (let + ((v1-91 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 366 4)) + ) + (a0-137 #x70000000) + ) + (s.w! (+ a0-137 1812) v1-91) + ) + (let + ((v1-93 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4)) + ) + (a0-140 #x70000000) + ) + (s.w! (+ a0-140 1816) v1-93) + ) + (let + ((v1-95 + (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 533 4)) + ) + (a0-143 #x70000000) + ) + (s.w! (+ a0-143 1820) v1-95) + ) + 0 + ) + +;; definition for function calc-animation-from-spr +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function create-interpolated-joint-animation-frame +(defun + create-interpolated-joint-animation-frame + ((arg0 joint-control) (arg1 int) (arg2 process-drawable)) + (flatten-joint-control-to-spr (-> arg2 skel)) + (make-joint-jump-tables) + (calc-animation-from-spr arg0 arg1) + 0 + ) + + + + diff --git a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc index 43181b2240..bf95e33a41 100644 --- a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc @@ -27,7 +27,7 @@ (target-grabbed? (_type_) symbol 26) (dummy-27 () none 27) (target-released? () symbol 28) - (dummy-29 () none 29) + (set-stack-size! (_type_) none 29) ) ) diff --git a/test/decompiler/reference/engine/camera/pov-camera_REF.gc b/test/decompiler/reference/engine/camera/pov-camera_REF.gc index df3f39013d..2ad4909c9d 100644 --- a/test/decompiler/reference/engine/camera/pov-camera_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera_REF.gc @@ -322,7 +322,7 @@ ;; definition for method 29 of type pov-camera ;; INFO: Return type mismatch symbol vs none. -(defmethod dummy-29 pov-camera () +(defmethod set-stack-size! pov-camera ((obj pov-camera)) (none) ) @@ -338,7 +338,7 @@ (arg4 process-drawable) (arg5 pair) ) - ((method-of-object self dummy-29)) + (set-stack-size! self) (set! (-> *game-info* pov-camera-handle) (process->handle self)) (set! (-> self flags) arg3) (set! (-> self command-list) arg5) diff --git a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc index 0d0de1be4a..a074e245ac 100644 --- a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc @@ -34,9 +34,9 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (dummy-9 () none 9) + (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) (dummy-10 () none 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) vector 11) (dummy-12 () none 12) ) ) @@ -130,7 +130,7 @@ :flag-assert #x1200000010 (:methods (dummy-9 () none 9) - (dummy-10 () none 10) + (touched-shape (_type_ collide-shape-moving) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) (dummy-13 () none 13) diff --git a/test/decompiler/reference/engine/draw/process-drawable_REF.gc b/test/decompiler/reference/engine/draw/process-drawable_REF.gc new file mode 100644 index 0000000000..3329e2ff4f --- /dev/null +++ b/test/decompiler/reference/engine/draw/process-drawable_REF.gc @@ -0,0 +1,1486 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function cspace-by-name +(defun cspace-by-name ((arg0 process-drawable) (arg1 string)) + (let* ((s4-0 (-> arg0 node-list length)) + (s3-0 0) + (s2-0 (-> arg0 node-list data s3-0)) + ) + (while (< s3-0 s4-0) + (if (and (-> s2-0 joint) (name= (-> s2-0 joint name) arg1)) + (return s2-0) + ) + (+! s3-0 1) + (set! s2-0 (-> arg0 node-list data s3-0)) + ) + ) + (the-as cspace #f) + ) + +;; definition for function cspace-index-by-name +(defun cspace-index-by-name ((arg0 process-drawable) (arg1 string)) + (let* ((s4-0 0) + (s3-0 (-> arg0 node-list length)) + (s2-0 0) + (v1-3 (-> arg0 node-list data s2-0)) + ) + (while (< s2-0 s3-0) + (if (and (-> v1-3 joint) (name= (-> v1-3 joint name) arg1)) + (return s4-0) + ) + (+! s4-0 1) + (+! s2-0 1) + (set! v1-3 (-> arg0 node-list data s2-0)) + ) + ) + -1 + ) + +;; definition for function vector<-cspace! +(defun vector<-cspace! ((arg0 vector) (arg1 cspace)) + (rlet ((Q :class vf) + (vf0 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (.lvf vf2 (&-> (-> arg1 bone) transform vector 3 quad)) + (.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11) + (.wait.vf) + (.mul.vf vf2 vf2 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.mov.vf vf2 vf0 :mask #b1000) + (.svf (&-> arg0 quad) vf2) + arg0 + ) + ) + +;; definition for function vector<-cspace+vector! +(defun vector<-cspace+vector! ((arg0 vector) (arg1 cspace) (arg2 vector)) + (vector-matrix*! arg0 arg2 (-> arg1 bone transform)) + ) + +;; definition (debug) for function cspace-children +(defun-debug cspace-children ((arg0 process-drawable) (arg1 int)) + (let ((a3-0 '())) + (countdown (s4-0 (-> arg0 node-list length)) + (if (= (-> arg0 node-list data s4-0 parent) arg1) + (set! a3-0 (cons (-> arg0 node-list data s4-0) a3-0)) + ) + ) + a3-0 + ) + ) + +;; definition (debug) for function cspace-inspect-tree +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for method 0 of type draw-control +(defmethod + new + draw-control + ((allocation symbol) (type-to-make type) (arg0 process) (arg1 art-joint-geo)) + (let + ((v0-0 + (object-new allocation type-to-make (the-as int (-> type-to-make size))) + ) + ) + (set! (-> v0-0 jgeo) arg1) + (set! (-> v0-0 process) arg0) + v0-0 + ) + ) + +;; definition for method 10 of type draw-control +;; INFO: Return type mismatch int vs none. +(defmethod lod-set! draw-control ((obj draw-control) (arg0 int)) + (let ((v1-1 (max 0 (min arg0 (-> obj lod-set max-lod))))) + (set! (-> obj desired-lod) v1-1) + (when (!= (-> obj cur-lod) v1-1) + (set! (-> obj mgeo) (-> obj lod-set lod v1-1 geo)) + (set! (-> obj cur-lod) v1-1) + ) + ) + 0 + (none) + ) + +;; definition for method 11 of type draw-control +;; INFO: Return type mismatch int vs none. +(defmethod lods-assign! draw-control ((obj draw-control) (arg0 lod-set)) + (mem-copy! (the-as pointer (-> obj lod-set)) (the-as pointer arg0) 33) + (let ((a1-2 (min (-> obj cur-lod) (-> obj lod-set max-lod)))) + (set! (-> obj cur-lod) -1) + (lod-set! obj a1-2) + ) + 0 + (none) + ) + +;; definition for method 9 of type lod-set +;; Used lq/sq +(defmethod + dummy-9 + lod-set + ((obj lod-set) (arg0 skeleton-group) (arg1 art-group) (arg2 entity)) + (local-vars (sv-16 res-tag)) + (let ((s4-0 arg0) + (s5-0 arg1) + ) + (let ((v1-0 (-> s5-0 length)) + (s3-0 (-> s4-0 max-lod)) + ) + (set! (-> obj max-lod) s3-0) + (dotimes (a0-1 (+ s3-0 1)) + (when (or (>= (-> s4-0 mgeo a0-1) v1-0) (begin + (set! + arg0 + (the-as + skeleton-group + (-> + s5-0 + data + (-> s4-0 mgeo a0-1) + ) + ) + ) + (!= + (-> + (the-as art-element arg0) + type + ) + merc-ctrl + ) + ) + ) + (set! obj (the-as lod-set #f)) + (goto cfg-16) + ) + (set! (-> obj lod a0-1 geo) (the-as merc-ctrl arg0)) + (set! (-> obj lod a0-1 dist) (-> s4-0 lod-dist a0-1)) + ) + (if (= (-> obj lod s3-0 dist) 4095996000.0) + (set! + (-> obj lod s3-0 dist) + (res-lump-float arg2 'vis-dist :default 4095996000.0) + ) + ) + ) + (let ((v1-13 (-> s5-0 data (-> s4-0 jgeo)))) + (set! sv-16 (new 'static 'res-tag)) + (let + ((v1-14 + (res-lump-data (-> v1-13 extra) 'lod-dist pointer :tag-ptr (& sv-16)) + ) + ) + (when v1-14 + (dotimes (a0-6 (the-as int (-> sv-16 elt-count))) + (set! + (-> obj lod a0-6 dist) + (-> (the-as (pointer float) (&+ v1-14 (* a0-6 4)))) + ) + ) + ) + ) + ) + ) + (label cfg-16) + obj + ) + +;; definition for symbol *default-skel-template*, type pair +(define + *default-skel-template* + '( + (align root #f) (prejoint root cspace<-parented-matrix-joint!) + ) + ) + +;; definition for function make-nodes-from-jg +(defbehavior + make-nodes-from-jg process-drawable + ((arg0 art-joint-geo) (arg1 pair) (arg2 symbol)) + (let + ((gp-0 + ((method-of-type cspace-array new) + arg2 + cspace-array + (+ (-> arg0 length) 1) + ) + ) + ) + (let + ((v0-1 ((method-of-type skeleton new) arg2 skeleton (+ (-> arg0 length) 1))) + ) + (set! (-> self draw skeleton) v0-1) + (let ((s4-1 v0-1)) + (when (or (zero? gp-0) (zero? s4-1)) + (go process-drawable-art-error "memory") + (set! gp-0 (the-as cspace-array #f)) + (goto cfg-16) + ) + (let + ((v1-10 + ((method-of-type cspace dummy-9) (the-as cspace (-> gp-0 data)) #f) + ) + ) + (set! (-> v1-10 bone) (the-as bone (-> s4-1 bones))) + (let ((a0-6 (-> gp-0 data))) + (set! (-> a0-6 0 param0) cspace<-transformq!) + (set! (-> a0-6 0 param1) (the-as basic (-> self root trans))) + ) + (set! (-> v1-10 bone cache bone-matrix) (the-as uint 0)) + ) + 0 + (let ((v1-14 (dummy-9 (-> gp-0 data 1) #f))) + (set! (-> v1-14 joint) (-> arg0 data 0)) + (set! (-> v1-14 bone) (-> s4-1 bones 1)) + (set! (-> v1-14 parent) (the-as cspace (-> gp-0 data))) + (set! (-> v1-14 bone cache bone-matrix) (the-as uint 128)) + ) + (let ((v1-17 (dummy-9 (-> gp-0 data 2) #f))) + (set! (-> v1-17 joint) (-> arg0 data 1)) + (set! (-> v1-17 bone) (-> s4-1 bones 2)) + (set! (-> v1-17 parent) (the-as cspace (-> gp-0 data))) + (let ((a1-9 v1-17)) + (set! (-> a1-9 param0) cspace<-parented-matrix-joint!) + (set! (-> a1-9 param1) self) + ) + (set! (-> v1-17 bone cache bone-matrix) (the-as uint 256)) + ) + (let ((s3-0 3)) + (while (< s3-0 (-> gp-0 length)) + (let* ((s1-0 (-> arg0 data (+ s3-0 -1))) + (s2-0 (if (-> s1-0 parent) + (+ (-> s1-0 parent number) 1) + 0 + ) + ) + (v1-29 (dummy-9 (-> gp-0 data s3-0) #f)) + ) + (set! (-> v1-29 joint) s1-0) + (set! (-> v1-29 bone) (-> s4-1 bones s3-0)) + (set! (-> v1-29 parent) (-> gp-0 data s2-0)) + (set! (-> v1-29 bone cache bone-matrix) (the-as uint (* s3-0 128))) + (set! (-> v1-29 bone cache parent-matrix) (the-as uint (* s2-0 128))) + ) + (+! s3-0 1) + ) + ) + ) + ) + (add-connection (-> (if (-> self entity) + (-> self entity extra level) + (-> *level* level-default) + ) + foreground-draw-engine + (-> self draw sink-group merc-sink foreground-texture-page) + ) + self add-process-drawable self (-> self draw) #f + ) + (label cfg-16) + gp-0 + ) + ) + +;; definition for function fill-skeleton-cache +;; WARN: Unsupported inline assembly instruction kind - [sync.l] +;; WARN: Unsupported inline assembly instruction kind - [cache dxwbin a2, 0] +;; WARN: Unsupported inline assembly instruction kind - [sync.l] +;; WARN: Unsupported inline assembly instruction kind - [cache dxwbin a2, 1] +;; WARN: Unsupported inline assembly instruction kind - [sync.l] +(defun fill-skeleton-cache ((arg0 process-drawable)) + (let ((v1-0 (-> arg0 node-list)) + (a0-2 (-> arg0 draw skeleton)) + ) + (dotimes (a1-0 (-> v1-0 length)) + (let ((a3-0 (-> v1-0 data a1-0)) + (a2-3 + (the-as + bone-cache + (+ + (the-as uint (the-as bone-cache (-> a0-2 bones 0 cache))) + (* 96 a1-0) + ) + ) + ) + ) + (set! (-> a2-3 bone-matrix) (the-as uint (* a1-0 128))) + (set! (-> a2-3 frame) (the-as uint 0)) + (let ((t0-3 0)) + (if (and (-> a3-0 parent) (-> a3-0 parent joint)) + (set! t0-3 (-> a3-0 parent joint number)) + ) + (set! (-> a2-3 parent-matrix) (the-as uint (* (+ t0-3 1) 128))) + ) + (.sync.l) + (.cache dxwbin a2-3 0) + (.sync.l) + (.cache dxwbin a2-3 1) + ) + (.sync.l) + 0 + ) + ) + 0 + ) + +;; definition for function execute-math-engine +(defun execute-math-engine () + (let ((gp-0 *matrix-engine*)) + (countdown (s5-0 (-> gp-0 length)) + (let ((a0-1 (handle->process (-> gp-0 s5-0)))) + (if a0-1 + (dummy-17 a0-1) + ) + ) + ) + (set! (-> gp-0 length) 0) + ) + 0 + 0 + ) + +;; definition for method 17 of type process-drawable +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod dummy-17 process-drawable ((obj process-drawable)) + (cond + ((logtest? (-> obj draw status) 6) + ) + ((zero? (-> obj skel)) + (matrix<-transformq+trans! + (the-as matrix (-> obj draw skeleton bones 3)) + (the-as transformq (-> obj root trans)) + (-> obj draw skeleton bones 0 transform vector 3) + ) + (set! + (-> obj draw origin quad) + (-> obj draw skeleton bones 3 transform vector 3 quad) + ) + ) + (else + (let* ((s5-0 (-> obj draw mgeo num-joints)) + (s4-0 (+ s5-0 2)) + ) + (+ s4-0 1) + (let ((t9-1 (-> obj skel generate-frame-function)) + (a0-7 (+ 2416 #x70000000)) + (a1-1 (the-as object s4-0)) + (a2-1 (the-as basic obj)) + ) + (t9-1 + (the-as pointer a0-7) + (the-as int a1-1) + (the-as process-drawable a2-1) + ) + (when (-> obj skel prebind-function) + (let ((t9-2 (-> obj skel prebind-function)) + (a0-9 (+ 2416 #x70000000)) + ) + (set! a2-1 obj) + (set! a1-1 s4-0) + (t9-2 + (the-as pointer a0-9) + (the-as int a1-1) + (the-as process-drawable a2-1) + ) + ) + ) + (dotimes (s4-1 1) + (let* ((v1-25 (-> obj node-list data s4-1)) + (t9-3 (-> v1-25 param0)) + ) + (when t9-3 + (let ((a0-12 v1-25)) + (set! a1-1 (-> v1-25 param1)) + (set! a2-1 (-> v1-25 param2)) + ((the-as (function cspace basic basic int) t9-3) + a0-12 + (the-as basic a1-1) + a2-1 + ) + ) + ) + ) + ) + (dotimes (s4-2 2) + (let ((a0-15 (-> obj node-list data (+ s4-2 1)))) + (set! a1-1 (+ (* s4-2 64) 2416 #x70000000)) + (let ((t9-4 (-> a0-15 param0))) + (if t9-4 + ((the-as (function none) t9-4)) + ) + ) + ) + ) + (let ((s4-3 3)) + (dotimes (s3-0 s5-0) + (let ((a0-17 (-> obj node-list data (+ s3-0 s4-3)))) + (set! a1-1 (+ (* 48 s3-0) 2544 #x70000000)) + (if (-> a0-17 param0) + ((the-as (function none) (-> a0-17 param0))) + (cspace<-parented-transformq-joint! a0-17 (the-as transformq a1-1)) + ) + ) + ) + ) + (if (-> obj skel postbind-function) + ((-> obj skel postbind-function) + (the-as pointer obj) + (the-as int a1-1) + (the-as process-drawable a2-1) + ) + ) + ) + ) + (let ((v1-54 (-> obj draw origin-joint-index))) + (if (zero? v1-54) + (set! + (-> obj draw origin quad) + (-> + (the-as + (pointer uint128) + (+ + (the-as uint (-> obj draw skeleton bones 0 transform vector 3)) + (* (the-as uint 96) v1-54) + ) + ) + ) + ) + (vector<-cspace! (-> obj draw origin) (-> obj node-list data v1-54)) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 18 of type process-drawable +;; INFO: Return type mismatch int vs none. +(defmethod dummy-18 process-drawable ((obj process-drawable)) + (if (type-type? (-> obj root type) collide-shape) + (dummy-48 (the-as collide-shape (-> obj root))) + ) + (if (nonzero? (-> obj skel)) + (ja-channel-set! 0) + ) + (process-entity-status! obj (entity-perm-status dead) #t) + (none) + ) + +;; definition for function draw-joint-spheres +;; Used lq/sq +(defun draw-joint-spheres ((arg0 process-drawable)) + (dotimes (s5-0 (-> arg0 node-list length)) + (let + ((a2-0 (vector<-cspace! (new-stack-vector0) (-> arg0 node-list data s5-0)))) + (add-debug-sphere + #t + (bucket-id debug-draw0) + a2-0 + 819.2 + (new 'static 'rgba :g #xff :a #x40) + ) + ) + ) + #f + ) + +;; definition for method 10 of type process-drawable +(defmethod deactivate process-drawable ((obj process-drawable)) + (if (nonzero? (-> obj part)) + (kill-and-free-particles (-> obj part)) + ) + (if (nonzero? (-> obj sound)) + (stop! (-> obj sound)) + ) + ((method-of-type process deactivate) obj) + (none) + ) + +;; failed to figure out what this is: +(defstate process-drawable-art-error (process-drawable) + :code + (behavior ((arg0 string)) + (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) + (while #t + (when *display-entity-errors* + (let ((s5-0 add-debug-text-3d) + (s4-0 #t) + (s3-0 68) + ) + (format + (clear *temp-string*) + "~2j~s art error for ~s" + arg0 + (-> self name) + ) + (s5-0 + s4-0 + (the-as bucket-id s3-0) + *temp-string* + (-> self root trans) + (font-color orange-red) + (the-as vector2h #f) + ) + ) + ) + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate process-drawable-idle (process-drawable) + :code + anim-loop + :post + ja-post + ) + +;; definition for method 14 of type process-drawable +;; WARN: Stack slot offset 20 signed mismatch +;; WARN: Stack slot offset 20 signed mismatch +;; WARN: Stack slot offset 20 signed mismatch +;; INFO: Return type mismatch draw-control vs none. +;; Used lq/sq +(defmethod + initialize-skeleton + process-drawable + ((obj process-drawable) (arg0 skeleton-group) (arg1 pair)) + (local-vars (s3-0 draw-control) (sv-16 art-element) (sv-20 int)) + (let ((s1-0 (cond + ((= (-> arg0 texture-level) 2) + (-> *level* level-default) + ) + ((-> obj entity) + (-> obj entity extra level) + ) + (else + (-> *level* level-default) + ) + ) + ) + ) + (let + ((s4-0 + (load-to-heap-by-name + (-> s1-0 art-group) + (the-as string (-> arg0 art-group-name)) + #f + global + (-> arg0 version) + ) + ) + ) + (when (or (zero? s4-0) (or (not s4-0) (!= (-> s4-0 type) art-group))) + (go process-drawable-art-error "art-group") + (set! s3-0 (the-as draw-control #f)) + (goto cfg-59) + ) + (set! sv-16 (-> s4-0 data (-> arg0 jgeo))) + (set! sv-20 (-> s4-0 length)) + (when (or (>= (-> arg0 jgeo) sv-20) (!= (-> sv-16 type) art-joint-geo)) + (go process-drawable-art-error "joint-geo") + (set! s3-0 (the-as draw-control #f)) + (goto cfg-59) + ) + (let ((v0-3 (new 'process 'draw-control obj (the-as art-joint-geo sv-16)))) + (set! (-> obj draw) v0-3) + (set! s3-0 v0-3) + ) + (let ((v1-26 s3-0)) + (set! (-> v1-26 status) (the-as uint 16)) + (set! (-> v1-26 art-group) s4-0) + (set! (-> v1-26 jgeo) (the-as art-joint-geo sv-16)) + (set! (-> v1-26 force-lod) -1) + (set! (-> v1-26 cur-lod) -1) + (set! (-> v1-26 shadow) #f) + (set! (-> v1-26 shadow-ctrl) #f) + (set! (-> v1-26 data-format) (the-as uint 1)) + (set! + (-> v1-26 color-mult quad) + (-> (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) quad) + ) + (set! (-> v1-26 color-emissive quad) (-> (new 'static 'vector) quad)) + (set! (-> v1-26 level-index) (the-as uint (-> (if (-> obj entity) + (-> obj entity extra level) + (-> *level* level-default) + ) + index + ) + ) + ) + (set! (-> v1-26 longest-edge) (-> arg0 longest-edge)) + (set! (-> v1-26 ripple) #f) + ) + (set! (-> s3-0 bounds quad) (-> arg0 bounds quad)) + (let ((v1-28 (-> arg0 shadow))) + (when (and (> v1-28 0) (< v1-28 sv-20)) + (let ((s0-0 (-> s4-0 data v1-28)) + (v1-32 (res-lump-value (-> obj entity) 'options uint128)) + ) + (if (and (zero? (logand #x20000 v1-32)) (= (-> s0-0 type) shadow-geo)) + (set! (-> s3-0 shadow) (the-as shadow-geo s0-0)) + ) + ) + ) + ) + (if (not (dummy-9 (-> s3-0 lod-set) arg0 s4-0 (-> obj entity))) + (go process-drawable-art-error "mesh") + ) + (let + ((v1-43 + (res-lump-value + (-> sv-16 extra) + 'texture-bucket + int + :default + (the-as uint128 1) + ) + ) + ) + (let ((a0-39 (if (= (-> arg0 texture-level) 2) + 2 + (-> s1-0 index) + ) + ) + ) + (if (= (the-as uint v1-43) 4) + (set! v1-43 2) + ) + (if (= a0-39 2) + (set! v1-43 (-> arg0 sort)) + ) + ) + (set! (-> s3-0 sink-group) (-> s1-0 foreground-sink-group v1-43)) + ) + (set! + (-> s3-0 dma-add-func) + (the-as + (function process-drawable draw-control symbol object none) + nothing + ) + ) + (set! + (-> obj node-list) + (make-nodes-from-jg (the-as art-joint-geo sv-16) arg1 'process) + ) + (set! (-> s3-0 dma-add-func) dma-add-process-drawable) + (set! + (-> s3-0 shadow-mask) + (res-lump-value (-> obj entity) 'shadow-mask uint) + ) + (set! + (-> s3-0 light-index) + (res-lump-value (-> obj entity) 'light-index uint) + ) + (lod-set! s3-0 0) + (let + ((a2-10 + (res-lump-value + (-> sv-16 extra) + 'joint-channel + int + :default + (the-as uint128 6) + ) + ) + ) + (cond + ((> a2-10 0) + (logior! (-> s3-0 status) 128) + (let ((v0-13 (new 'process 'joint-control a2-10))) + (set! (-> obj skel) v0-13) + (let ((s2-1 v0-13)) + (cond + ((>= (-> arg0 janim) 0) + (when + (or + (>= (-> arg0 janim) sv-20) + (!= (-> s4-0 data (-> arg0 janim) type) art-joint-anim) + ) + (go process-drawable-art-error "initial joint-anim") + (set! s3-0 (the-as draw-control #f)) + (goto cfg-59) + ) + (ja-channel-set! 1) + (let ((s1-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s1-1 + (the-as art-joint-anim (-> s4-0 data (-> arg0 janim))) + num-func-identity + ) + (set! (-> s1-1 frame-num) 0.0) + ) + ) + (else + (ja-channel-set! 0) + ) + ) + (set! (-> s2-1 effect) (new 'process 'effect-control obj)) + ) + ) + ) + (else + (set! + (-> s3-0 skeleton bones 0 transform vector 3 quad) + (-> + (the-as + vector + ((method-of-type res-lump get-property-struct) + (-> sv-16 extra) + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + quad + ) + ) + ) + ) + ) + ) + ) + (let + ((gp-1 (the-as collide-shape (-> (the-as collide-shape obj) dir-targ x)))) + (if (and gp-1 (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) + ((method-of-object gp-1 dummy-38)) + ) + ) + (label cfg-59) + (none) + ) + +;; definition for method 15 of type process-drawable +(defmethod + dummy-15 + process-drawable + ((obj process-drawable) (arg0 string) (arg1 object)) + (let ((s3-0 string->symbol)) + (format (clear *temp-string*) "*~S-sg*" arg0) + (let ((s3-1 (-> (s3-0 *temp-string*) value))) + (if (and (nonzero? s3-1) (valid? s3-1 skeleton-group #f #f 0)) + (initialize-skeleton obj (the-as skeleton-group s3-1) (the-as pair arg1)) + (go process-drawable-art-error arg0) + ) + ) + ) + obj + ) + +;; definition for method 16 of type process-drawable +;; INFO: Return type mismatch trsqv vs collide-shape. +(defmethod + dummy-16 + process-drawable + ((obj process-drawable) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) + (when (logtest? arg0 7) + (let* + ((body-T-world + (quaternion->matrix (new 'stack-no-clear 'matrix) (-> obj root quat)) + ) + (world-T-body + (matrix-transpose! (new 'stack-no-clear 'matrix) body-T-world) + ) + (grav-rt-body + (vector-matrix*! + (new 'stack-no-clear 'vector) + (-> *standard-dynamics* gravity) + world-T-body + ) + ) + (vel-rt-body + (vector-matrix*! + (new 'stack-no-clear 'vector) + (-> obj root transv) + world-T-body + ) + ) + ) + (if (logtest? arg0 2048) + (set-vector! grav-rt-body 0.0 0.0 0.0 1.0) + ) + (when (logtest? arg0 1) + (set! + (-> vel-rt-body x) + (+ + (* (-> arg1 0 x) (-> arg2 x) (-> *display* frames-per-second)) + (* (-> grav-rt-body x) (-> *display* seconds-per-frame)) + ) + ) + (if (zero? (logand arg0 12)) + (set! (-> vel-rt-body z) 0.0) + ) + ) + (if + (and + (logtest? arg0 2) + (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0))) + ) + (set! + (-> vel-rt-body y) + (+ + (* (-> arg1 0 y) (-> arg2 y) (-> *display* frames-per-second)) + (* (-> grav-rt-body y) (-> *display* seconds-per-frame)) + ) + ) + ) + (when (logtest? arg0 4) + (set! + (-> vel-rt-body z) + (+ + (* (-> arg1 0 z) (-> arg2 z) (-> *display* frames-per-second)) + (* (-> grav-rt-body z) (-> *display* seconds-per-frame)) + ) + ) + (if (zero? (logand arg0 9)) + (set! (-> vel-rt-body x) 0.0) + ) + ) + (vector-matrix*! (-> obj root transv) vel-rt-body body-T-world) + ) + ) + (if (logtest? arg0 16) + (quaternion-normalize! + (quaternion*! + (-> obj root quat) + (-> obj root quat) + (the-as quaternion (-> arg1 1)) + ) + ) + ) + (the-as collide-shape (-> obj root)) + ) + +;; definition for function ja-done? +(defbehavior ja-done? process-drawable ((arg0 int)) + (let ((v1-2 (-> self skel root-channel arg0))) + (cond + ((zero? (-> self skel active-channels)) + #t + ) + ((= (-> v1-2 num-func) num-func-seek!) + (= (-> v1-2 frame-num) (-> v1-2 param 0)) + ) + (else + #t + ) + ) + ) + ) + +;; definition for function ja-min? +(defbehavior ja-min? process-drawable ((arg0 int)) + (= (-> self skel root-channel arg0 frame-num) 0.0) + ) + +;; definition for function ja-max? +(defbehavior ja-max? process-drawable ((arg0 int)) + (let ((v1-2 (-> self skel root-channel arg0))) + (>= + (-> v1-2 frame-num) + (the float (+ (-> v1-2 frame-group data 0 length) -1)) + ) + ) + ) + +;; definition for function ja-num-frames +(defbehavior ja-num-frames process-drawable ((arg0 int)) + (+ (-> self skel root-channel arg0 frame-group data 0 length) -1) + ) + +;; definition for function ja-frame-num +(defbehavior ja-frame-num process-drawable ((arg0 int)) + (-> self skel root-channel arg0 frame-num) + ) + +;; definition for function ja-aframe-num +(defbehavior ja-aframe-num process-drawable ((arg0 int)) + (let* ((a0-2 (-> self skel root-channel arg0)) + (v1-2 (-> a0-2 frame-group)) + ) + (+ + (* (-> a0-2 frame-num) (-> v1-2 artist-step)) + (if (and v1-2 (nonzero? v1-2)) + (-> v1-2 artist-base) + 0.0 + ) + ) + ) + ) + +;; definition for function ja-aframe +(defbehavior ja-aframe process-drawable ((arg0 float) (arg1 int)) + (let ((v1-3 (-> self skel root-channel arg1 frame-group))) + (/ (- arg0 (if (and v1-3 (nonzero? v1-3)) + (-> v1-3 artist-base) + 0.0 + ) + ) + (if v1-3 + (-> v1-3 artist-step) + 1.0 + ) + ) + ) + ) + +;; definition for function ja-speed +(defbehavior ja-speed process-drawable ((arg0 int)) + (-> self skel root-channel arg0 frame-group speed) + ) + +;; definition for function ja-step +(defbehavior ja-step process-drawable ((arg0 int)) + (-> self skel root-channel arg0 frame-group artist-step) + ) + +;; definition for function ja-channel-set! +(defbehavior ja-channel-set! process-drawable ((arg0 int)) + (set! (-> self skel active-channels) arg0) + (set! (-> self skel root-channel) (-> self skel channel)) + (set! (-> self skel blend-index) -1) + (set! (-> self skel root-channel 0 frame-group) #f) + (dotimes (v1-6 arg0) + (set! + (-> self skel root-channel v1-6 eval-time) + (the-as uint (-> *display* base-frame-counter)) + ) + (set! (-> self skel root-channel v1-6 group-sub-index) v1-6) + (set! (-> self skel root-channel v1-6 command) (if (zero? v1-6) + 'push + 'blend + ) + ) + (set! (-> self skel root-channel v1-6 frame-interp) 0.0) + (set! (-> self skel root-channel v1-6 frame-num) 0.0) + (set! (-> self skel root-channel v1-6 frame-group) #f) + (set! (-> self skel root-channel v1-6 num-func) num-func-none) + (set! (-> self skel root-channel v1-6 group-size) arg0) + ) + arg0 + ) + +;; definition for function ja-channel-push! +(defbehavior ja-channel-push! process-drawable ((arg0 int) (arg1 int)) + (cond + ((or + (zero? (-> self skel active-channels)) + (zero? arg1) + (when + (>= + (+ (-> self skel active-channels) arg0) + (-> self skel allocated-length) + ) + (format + 0 + "WARNING: ~A could not do (ja-channel-push ~D) because it has ~D/~D channels.~%" + self + arg0 + (-> self skel active-channels) + (-> self skel allocated-length) + ) + #t + ) + ) + (ja-channel-set! arg0) + ) + (else + (when (not (-> self skel root-channel 0 frame-group)) + (set! + (-> self skel active-channels) + (/ + (&- + (the-as pointer (-> self skel root-channel)) + (the-as uint (the-as pointer (-> self skel channel))) + ) + 48 + ) + ) + (if (zero? (-> self skel active-channels)) + (return (ja-channel-set! arg0)) + ) + ) + (set! + (-> self skel root-channel) + (the-as + (inline-array joint-control-channel) + (-> self skel channel (-> self skel active-channels)) + ) + ) + (set! + (-> self skel active-channels) + (+ arg0 1 (-> self skel active-channels)) + ) + (dotimes (v1-26 arg0) + (set! + (-> self skel root-channel v1-26 eval-time) + (the-as uint (-> *display* base-frame-counter)) + ) + (set! (-> self skel root-channel v1-26 group-sub-index) v1-26) + (set! (-> self skel root-channel v1-26 command) (if (zero? v1-26) + 'push + 'blend + ) + ) + (set! (-> self skel root-channel v1-26 frame-interp) 0.0) + (set! (-> self skel root-channel v1-26 frame-num) 0.0) + (set! (-> self skel root-channel v1-26 frame-group) #f) + (set! (-> self skel root-channel v1-26 num-func) num-func-none) + (set! (-> self skel root-channel v1-26 group-size) arg0) + ) + (let ((v1-31 (-> self skel root-channel arg0))) + (set! (-> v1-31 eval-time) (the-as uint (-> *display* base-frame-counter))) + (set! (-> v1-31 group-sub-index) arg0) + (set! (-> self skel blend-index) (+ (-> self skel active-channels) -1)) + (set! (-> v1-31 frame-interp) 0.0) + (set! (-> v1-31 frame-num) 0.0) + (set! (-> v1-31 frame-group) #f) + (set! (-> v1-31 group-size) arg0) + (set! (-> v1-31 param 0) (/ 5.0 (+ 5.0 (the float arg1)))) + (set! (-> v1-31 num-func) num-func-blend-in!) + (cond + ((= arg0 1) + (set! (-> v1-31 command) 'stack1) + (set! (-> self skel root-channel 0 command) 'push1) + ) + (else + (set! (-> v1-31 command) 'stack) + ) + ) + ) + arg0 + ) + ) + ) + +;; definition for function joint-control-reset! +;; INFO: Return type mismatch int vs none. +(defbehavior + joint-control-reset! process-drawable + ((arg0 joint-control) (arg1 joint-control-channel)) + (let* + ((v1-2 + (the-as + joint-control-channel + (&- (the-as pointer arg1) (the-as uint (* 48 (-> arg1 group-size)))) + ) + ) + (s5-0 + (/ + (&- + (the-as pointer v1-2) + (the-as uint (the-as pointer (-> arg0 channel))) + ) + 48 + ) + ) + (s4-0 (/ (&- (the-as pointer arg1) (the-as uint v1-2)) 48)) + ) + (when (> s5-0 0) + (if (= (-> v1-2 command) 'push1) + (set! (-> v1-2 command) 'push) + ) + (if (= (-> arg0 root-channel) v1-2) + (set! (-> arg0 root-channel) (-> arg0 channel)) + (set! + (-> arg0 root-channel) + (the-as + (inline-array joint-control-channel) + (-> arg0 root-channel (- (+ s5-0 1))) + ) + ) + ) + (qmem-copy<-! + (the-as pointer (-> arg0 channel)) + (the-as pointer v1-2) + (* 48 (- (-> arg0 active-channels) s5-0)) + ) + (qmem-copy<-! + (the-as pointer (-> arg0 channel s4-0)) + (the-as pointer (+ (the-as uint (-> arg0 channel 1)) (* 48 s4-0))) + (* 48 (+ (- (- -1 s5-0) s4-0) (-> arg0 active-channels))) + ) + (set! (-> arg0 active-channels) (- (-> arg0 active-channels) (+ s5-0 1))) + ) + ) + (none) + ) + +;; definition for function ja-group-size +(defbehavior ja-group-size process-drawable () + (if + (< + (the-as int (-> self skel root-channel)) + (the-as int (-> self skel channel (-> self skel active-channels))) + ) + (-> self skel root-channel 0 group-size) + 0 + ) + ) + +;; definition for function ja-eval +(defbehavior ja-eval process-drawable () + (let ((gp-0 (-> self skel root-channel 0)) + (s5-0 (-> self skel channel (-> self skel active-channels))) + (s4-0 (-> *display* base-frame-counter)) + ) + (while (< (the-as int gp-0) (the-as int s5-0)) + (case (-> gp-0 command) + (('stack 'stack1) + ) + (else + (if (!= (-> gp-0 eval-time) s4-0) + (joint-control-channel-eval gp-0) + ) + ) + ) + (&+! gp-0 48) + ) + ) + 0 + ) + +;; definition for function ja-blend-eval +(defbehavior ja-blend-eval process-drawable () + (let ((gp-0 (-> self skel root-channel)) + (s5-0 (the-as joint-control-channel (-> self skel channel))) + (s4-0 (-> *display* base-frame-counter)) + ) + (when (and (nonzero? (-> self skel active-channels)) (!= gp-0 s5-0)) + (while (< (the-as int s5-0) (the-as int gp-0)) + (case (-> s5-0 command) + (('stack 'stack1) + ) + (else + (if (!= (-> s5-0 eval-time) s4-0) + (joint-control-channel-eval s5-0) + ) + ) + ) + (&+! s5-0 48) + ) + ) + ) + 0 + ) + +;; definition for method 19 of type process-drawable +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function ja-post +;; INFO: Return type mismatch int vs none. +;; WARN: Expression building failed: Function ja-post has a return type of none, but the expression builder found a return statement. +(defbehavior ja-post process-drawable () + (when (nonzero? (-> self draw)) + (let ((gp-1 (logtest? (-> self draw status) 16))) + (set! (-> self draw status) (logand -21 (-> self draw status))) + (when (nonzero? (-> self skel)) + (dummy-19 self) + (when (or (logtest? (-> self skel status) 1) gp-1) + (dummy-17 self) + (if (and gp-1 (type-type? (-> self root type) collide-shape)) + (dummy-47 (the-as collide-shape (-> self root))) + ) + (return #f) + ) + ) + ) + (let ((v1-24 *matrix-engine*)) + (set! (-> v1-24 (-> v1-24 length)) (process->handle self)) + (+! (-> v1-24 length) 1) + ) + ) + 0 + (none) + ) + +;; definition for method 9 of type joint-control +;; INFO: Return type mismatch float vs none. +(defmethod dummy-9 joint-control ((obj joint-control)) + (cond + ((< + (the-as int (-> obj root-channel)) + (the-as int (-> obj channel (-> obj active-channels))) + ) + (let ((s5-0 (-> obj root-channel (-> obj root-channel 0 group-size))) + (s4-0 (the-as joint-control-channel (-> obj root-channel))) + (gp-0 (the-as (pointer float) (new 'stack-no-clear 'vector))) + ) + (while (< (the-as int s4-0) (the-as int s5-0)) + (case (-> s4-0 command) + (('push) + (set! (-> gp-0 0) (-> s4-0 dist)) + (set! gp-0 (&-> gp-0 1)) + ) + (('blend 'push1) + (set! + (-> gp-0 -1) + (lerp (-> gp-0 -1) (-> s4-0 dist) (-> s4-0 frame-interp)) + ) + ) + (('stack) + (set! + (-> gp-0 -2) + (lerp (-> gp-0 -2) (-> gp-0 -1) (-> s4-0 frame-interp)) + ) + (set! gp-0 (&-> gp-0 -1)) + ) + ) + (&+! s4-0 48) + ) + (-> gp-0 -1) + ) + ) + (else + 0.0 + ) + ) + (none) + ) + +;; definition for function anim-loop +(defbehavior anim-loop process-drawable () + (logior! (-> self mask) (process-mask sleep-code)) + (while #t + (nop!) + (suspend) + ) + (none) + ) + +;; definition for function transform-post +(defbehavior transform-post process-drawable () + (ja-post) + (dummy-47 (the-as collide-shape (-> self root))) + 0 + ) + +;; definition for function rider-trans +(defbehavior rider-trans process-drawable () + (dummy-35 (the-as collide-shape (-> self root))) + 0 + ) + +;; definition for function rider-post +(defbehavior rider-post process-drawable () + (ja-post) + (let ((gp-0 (the-as collide-shape (-> self root)))) + (dummy-47 gp-0) + (dummy-44 gp-0) + (dummy-45 gp-0) + ) + 0 + ) + +;; definition for function pusher-post +(defbehavior pusher-post process-drawable () + (ja-post) + (let ((gp-0 (the-as collide-shape (-> self root)))) + (dummy-47 gp-0) + (dummy-45 gp-0) + ) + 0 + ) + +;; definition for function process-drawable-delay-player +(defbehavior process-drawable-delay-player process-drawable ((arg0 int)) + (while + (and + *target* + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + (suspend) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (process-grab? *target*) + (while + (or + (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + ) + (suspend) + ) + (while (< (- (-> *display* base-frame-counter) (-> self state-time)) arg0) + (suspend) + ) + (process-release? *target*) + (suspend) + 0 + ) + +;; definition for function process-drawable-fuel-cell-handler +;; INFO: Return type mismatch int vs none. +(defbehavior + process-drawable-fuel-cell-handler process-drawable + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('notify) + (case (-> arg3 param 0) + (('pickup) + (if (type-type? (-> arg0 type) fuel-cell) + (process-entity-status! self (entity-perm-status dead) #t) + ) + ) + ) + ) + ) + (none) + ) + +;; definition for function process-drawable-birth-fuel-cell +;; WARN: Found some very strange gotos. Check result carefully, this is not well tested. +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior + process-drawable-birth-fuel-cell process-drawable + ((arg0 entity) (arg1 vector) (arg2 symbol)) + (let ((v1-0 arg0) + (gp-0 (new 'stack-no-clear 'vector)) + ) + (if (not v1-0) + (set! v1-0 (-> self entity)) + ) + (if arg1 + (set! (-> gp-0 quad) (-> arg1 quad)) + (set! (-> gp-0 quad) (-> v1-0 extra trans quad)) + ) + (let ((s5-0 (-> v1-0 extra perm task)) + (s4-0 (new 'static 'fact-info)) + ) + (set! (-> s4-0 options) (the-as uint 0)) + (if arg2 + (set! (-> s4-0 options) (the-as uint 64)) + ) + (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) + (label cfg-12) + (birth-pickup-at-point gp-0 6 (the float s5-0) #f self s4-0) + (when (not (-> self child)) + (suspend) + (goto cfg-12) + ) + ) + ) + ) + 0 + (none) + ) + +;; this part is debug only +(when *debug-segment* +;; definition for symbol *valid-con*, type string +(define *valid-con* (new 'debug 'string #x4000 (the-as string #f))) + +) +;; definition (debug) for function process-drawable-valid? +(defun-debug process-drawable-valid? ((arg0 process-drawable)) + (let ((s5-0 #t)) + (clear *valid-con*) + (format *valid-con* "~%--- ~A -----------------------------~%" arg0) + (dotimes (s4-0 (-> arg0 node-list length)) + (let ((s3-0 (-> arg0 node-list data s4-0))) + (when (-> s3-0 geo) + (cond + ((valid? (-> s3-0 geo) drawable "cspace geo" #t *valid-con*) + ) + (else + (format + *valid-con* + "ERROR: ~A has an invalid geo ~A~%" + s3-0 + (-> s3-0 geo) + ) + (set! s5-0 #f) + ) + ) + ) + ) + ) + (let ((s4-1 (-> arg0 skel active-channels))) + (when (< (-> arg0 skel allocated-length) s4-1) + (format + *valid-con* + "ERROR: ~~A has ~D joint channels, but only ~D are allowed~%" + arg0 + s4-1 + (-> arg0 skel allocated-length) + ) + (set! s5-0 #f) + ) + (dotimes (s3-1 s4-1) + (let ((s2-0 (-> arg0 skel channel s3-1))) + (case (-> s2-0 command) + (('stack 'stack1) + ) + (else + (set! s5-0 (cond + ((valid? + (-> s2-0 frame-group) + art-joint-anim + "joint-control frame-group" + #t + *valid-con* + ) + (when + (not + (and + (>= (the int (-> s2-0 frame-num)) 0) + (< + (the int (-> s2-0 frame-num)) + (-> s2-0 frame-group data 0 length) + ) + ) + ) + (format + *valid-con* + "ERROR: ~`joint-control-channel`P #~D has an invalid frame-num ~F/~D [0-~D]~%" + s2-0 + s3-1 + (-> s2-0 frame-num) + (the int (-> s2-0 frame-num)) + (+ (-> s2-0 frame-group data 0 length) -1) + ) + (set! s5-0 #f) + ) + s5-0 + ) + (else + (format + *valid-con* + "ERROR: ~`joint-control-channel`P #~D has an invalid frame-group ~A~%" + s2-0 + s3-1 + (-> s2-0 frame-group) + ) + #f + ) + ) + ) + ) + ) + ) + ) + ) + (when (not s5-0) + (format *valid-con* "--------------------------------~%~%") + (format 0 "~S" *valid-con*) + ) + s5-0 + ) + ) + + + + diff --git a/test/decompiler/reference/engine/game/effect-control_REF.gc b/test/decompiler/reference/engine/game/effect-control_REF.gc index de8cce0569..66edc17f63 100644 --- a/test/decompiler/reference/engine/game/effect-control_REF.gc +++ b/test/decompiler/reference/engine/game/effect-control_REF.gc @@ -1383,8 +1383,8 @@ ) 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ((logtest? (-> self water flags) 512) diff --git a/test/decompiler/reference/engine/game/game-info_REF.gc b/test/decompiler/reference/engine/game/game-info_REF.gc index 5c2fd3ac58..8e3d581e7d 100644 --- a/test/decompiler/reference/engine/game/game-info_REF.gc +++ b/test/decompiler/reference/engine/game/game-info_REF.gc @@ -582,8 +582,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (when (handle->process source-handle) @@ -687,8 +687,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! @@ -840,8 +840,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (((pickup-type eco-green)) @@ -851,8 +851,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (((pickup-type eco-yellow)) @@ -862,8 +862,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (((pickup-type eco-red)) @@ -873,8 +873,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/engine/game/main_REF.gc b/test/decompiler/reference/engine/game/main_REF.gc index 38e3a229c7..9fcdb39ca7 100644 --- a/test/decompiler/reference/engine/game/main_REF.gc +++ b/test/decompiler/reference/engine/game/main_REF.gc @@ -558,8 +558,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -567,8 +567,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! (-> *cheat-temp* 0) 0) @@ -747,8 +747,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -756,8 +756,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! (-> *cheat-temp* 1) 0) @@ -881,8 +881,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -890,8 +890,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! (-> *cheat-temp* 2) 0) @@ -1012,8 +1012,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "cursor-options") @@ -1021,8 +1021,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! (-> *cheat-temp* 3) 0) @@ -1798,7 +1798,3 @@ (set! *run* #f) 0 ) - - - - diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index 67da8de10a..ac7a5c4093 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -1168,8 +1168,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) @@ -1214,8 +1214,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) @@ -1403,8 +1403,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj sound-id) @@ -1414,8 +1414,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (when (zero? (logand (-> obj options) 416)) @@ -1702,8 +1702,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> obj mode) 2) (set! (-> obj max-speed) (-> *TARGET-bank* yellow-projectile-speed)) diff --git a/test/decompiler/reference/engine/sound/gsound_REF.gc b/test/decompiler/reference/engine/sound/gsound_REF.gc index ecd79828bc..42035ef520 100644 --- a/test/decompiler/reference/engine/sound/gsound_REF.gc +++ b/test/decompiler/reference/engine/sound/gsound_REF.gc @@ -477,25 +477,25 @@ (vol int) (pitch int) (bend int) - (group uint) - (trans vector) + (group int) + (trans symbol) ) - (local-vars (sv-16 uint)) + (local-vars (sv-16 int)) (with-pp (set! sv-16 group) - (let ((sound-trans trans)) + (let ((sound-trans (the-as structure trans))) (when *sound-player-enable* (let ((cmd (the-as sound-rpc-play (get-sound-buffer-entry)))) (set! (-> cmd command) (sound-command play)) (set! (-> cmd id) id) (set! (-> cmd name) name) (set! (-> cmd parms mask) (the-as uint 0)) - (set! (-> cmd parms group) sv-16) + (set! (-> cmd parms group) (the-as uint sv-16)) (set! (-> cmd parms volume) vol) (set! (-> cmd parms pitch-mod) pitch) (set! (-> cmd parms bend) bend) (let ((proc (the-as process-drawable pp))) - (when (= sound-trans #t) + (when (= (the-as symbol sound-trans) #t) (if (and proc @@ -503,11 +503,11 @@ (nonzero? (-> proc root)) ) (set! sound-trans (-> proc root trans)) - (set! sound-trans (the-as vector #f)) + (set! sound-trans #f) ) ) ) - (sound-trans-convert (-> cmd parms trans) sound-trans) + (sound-trans-convert (-> cmd parms trans) (the-as vector sound-trans)) ) ) ) @@ -890,8 +890,8 @@ (-> obj volume) (-> obj pitch) 0 - (the-as uint 1) - (-> obj trans) + 1 + (the-as symbol (-> obj trans)) ) ) ) @@ -905,8 +905,8 @@ (-> obj volume) (-> obj pitch) 0 - (the-as uint 1) - (-> obj trans) + 1 + (the-as symbol (-> obj trans)) ) ) (set! diff --git a/test/decompiler/reference/engine/target/target-part_REF.gc b/test/decompiler/reference/engine/target/target-part_REF.gc index 268e5c0afe..cc3f42d299 100644 --- a/test/decompiler/reference/engine/target/target-part_REF.gc +++ b/test/decompiler/reference/engine/target/target-part_REF.gc @@ -3092,8 +3092,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((s5-1 (new 'stack 'rgbaf)) (s3-0 (-> *display* base-frame-counter)) @@ -3301,7 +3301,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/engine/ui/hud-classes_REF.gc b/test/decompiler/reference/engine/ui/hud-classes_REF.gc index d197aa384b..1da1163cf5 100644 --- a/test/decompiler/reference/engine/ui/hud-classes_REF.gc +++ b/test/decompiler/reference/engine/ui/hud-classes_REF.gc @@ -932,8 +932,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) 0 (none) @@ -1252,7 +1252,7 @@ 0 2 ((1 (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) + :bounds (static-spherem 0 1 0 1.600000023841858) :longest-edge (meters 0) :texture-level 2 ) diff --git a/test/decompiler/reference/engine/util/smush-control-h_REF.gc b/test/decompiler/reference/engine/util/smush-control-h_REF.gc index 56dbdb442a..25ae655aaf 100644 --- a/test/decompiler/reference/engine/util/smush-control-h_REF.gc +++ b/test/decompiler/reference/engine/util/smush-control-h_REF.gc @@ -11,6 +11,7 @@ (damp-period float :offset-assert 24) (ticks float :offset-assert 28) ) + :pack-me :method-count-assert 15 :size-assert #x20 :flag-assert #xf00000020 diff --git a/test/decompiler/reference/engine/util/sync-info-h_REF.gc b/test/decompiler/reference/engine/util/sync-info-h_REF.gc index 93f3092826..b6eae58f90 100644 --- a/test/decompiler/reference/engine/util/sync-info-h_REF.gc +++ b/test/decompiler/reference/engine/util/sync-info-h_REF.gc @@ -62,6 +62,7 @@ ((pause-after-out float :offset-assert 8) (pause-after-in float :offset-assert 12) ) + :pack-me :method-count-assert 18 :size-assert #x10 :flag-assert #x1200000010 @@ -86,6 +87,7 @@ (start-time int64 :offset-assert 16) (value float :offset-assert 24) ) + :pack-me :method-count-assert 11 :size-assert #x1c :flag-assert #xb0000001c diff --git a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc index e22d93a4d7..cac60d4d65 100644 --- a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc @@ -173,8 +173,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((a0-14 (-> self skel root-channel 0))) @@ -448,8 +448,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual nav-enemy-victory) (none) diff --git a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc new file mode 100644 index 0000000000..9441a0a5e5 --- /dev/null +++ b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc @@ -0,0 +1,2762 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type citb-arm-section +(deftype citb-arm-section (process-drawable) + ((sync sync-info :inline :offset-assert 176) + (cull-dir-local vector :inline :offset-assert 192) + (cull-dot float :offset-assert 208) + (rot-scale float :offset-assert 212) + (y-angle float :offset-assert 216) + ) + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + (:methods + (init-root! (_type_) none 20) + (setup-new-process! (_type_) none 21) + (idle () _type_ :state 22) + ) + ) + +;; definition for method 3 of type citb-arm-section +(defmethod inspect citb-arm-section ((obj citb-arm-section)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Tcull-dir-local: #~%" (-> obj cull-dir-local)) + (format #t "~T~Tcull-dot: ~f~%" (-> obj cull-dot)) + (format #t "~T~Trot-scale: ~f~%" (-> obj rot-scale)) + (format #t "~T~Ty-angle: ~f~%" (-> obj y-angle)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-a-sg* citb-arm + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 14) + :longest-edge (meters 9) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-b-sg* citb-arm + 4 + 7 + ((5 (meters 20)) (6 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 10) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-c-sg* citb-arm + 8 + 11 + ((9 (meters 20)) (10 (meters 999999))) + :bounds (static-spherem 0 0 0 25) + :longest-edge (meters 11) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-d-sg* citb-arm + 12 + 15 + ((13 (meters 20)) (14 (meters 999999))) + :bounds (static-spherem 0 0 0 29) + :longest-edge (meters 8) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-shoulder-a-sg* citb-arm-shoulder + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-arm-shoulder-b-sg* citb-arm-shoulder + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10) + ) + +;; failed to figure out what this is: +(defstate idle (citb-arm-section) + :virtual #t + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (while #t + (cond + ((< (- (-> (target-pos 0) y) (-> self root trans y)) -122880.0) + (set! (-> self draw force-lod) 1) + ) + (else + (set! (-> self draw force-lod) 0) + 0 + ) + ) + (set! + (-> self y-angle) + (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale)) + ) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self y-angle)) + (vector-orient-by-quat! gp-0 (-> self cull-dir-local) (-> self root quat)) + (vector-! s5-0 (-> self root trans) (camera-pos)) + (set! (-> gp-0 y) 0.0) + (set! (-> s5-0 y) 0.0) + (vector-normalize! gp-0 1.0) + (vector-normalize! s5-0 1.0) + (if (>= (vector-dot gp-0 s5-0) (-> self cull-dot)) + (logior! (-> self draw status) 2) + (set! (-> self draw status) (logand -3 (-> self draw status))) + ) + (suspend) + ) + ) + (none) + ) + :post + (the-as (function none :behavior citb-arm-section) ja-post) + ) + +;; definition for method 20 of type citb-arm-section +;; INFO: Return type mismatch int vs none. +(defmethod init-root! citb-arm-section ((obj citb-arm-section)) + (set! (-> obj root) (new 'process 'trsqv)) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-section +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-section ((obj citb-arm-section)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (cond + ((> (-> obj sync period) 0) + (set! (-> obj rot-scale) 1.0) + ) + (else + (set! (-> obj rot-scale) -1.0) + (let ((v1-6 (abs (the-as int (-> obj sync period))))) + (set! (-> obj sync period) (the-as uint v1-6)) + ) + ) + ) + (logior! (-> obj skel status) 1) + (set-vector! (-> obj cull-dir-local) 0.0 0.0 -1.0 1.0) + (set! (-> obj cull-dot) (cos 5461.3335)) + 0 + (none) + ) + +;; definition for method 11 of type citb-arm-section +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + citb-arm-section + ((obj citb-arm-section) (arg0 res-lump)) + (init-root! obj) + (process-drawable-from-entity! obj arg0) + (setup-new-process! obj) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type citb-arm +(deftype citb-arm (citb-arm-section) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm +(defmethod inspect citb-arm ((obj citb-arm)) + (let ((t9-0 (method-of-type citb-arm-section inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate idle (citb-arm) + :virtual #t + :trans + (the-as (function none :behavior citb-arm) rider-trans) + :post + (behavior () + (if (logtest? (-> self draw status) 2) + (dummy-48 (-> self root-override)) + (dummy-49 (-> self root-override)) + ) + (rider-post) + (none) + ) + ) + +;; definition for method 20 of type citb-arm +;; INFO: Return type mismatch int vs none. +(defmethod init-root! citb-arm ((obj citb-arm)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 40960.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm ((obj citb-arm)) + ((the-as (function citb-arm-section none) (find-parent-method citb-arm 21)) + obj + ) + (set! (-> obj draw origin-joint-index) (the-as uint 4)) + (set-vector! (-> obj cull-dir-local) 0.0 0.0 -1.0 1.0) + (set! (-> obj cull-dot) (cos 5461.3335)) + 0 + (none) + ) + +;; definition of type citb-arm-shoulder +(deftype citb-arm-shoulder (citb-arm-section) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-shoulder +(defmethod inspect citb-arm-shoulder ((obj citb-arm-shoulder)) + (let ((t9-0 (method-of-type citb-arm-section inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 21 of type citb-arm-shoulder +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-shoulder ((obj citb-arm-shoulder)) + ((the-as + (function citb-arm-section none) + (find-parent-method citb-arm-shoulder 21) + ) + obj + ) + (set! (-> obj draw origin-joint-index) (the-as uint 4)) + (set-vector! (-> obj cull-dir-local) 1.0 0.0 1.0 1.0) + (set! (-> obj cull-dot) (cos 8374.045)) + 0 + (none) + ) + +;; definition of type citb-arm-a +(deftype citb-arm-a (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-a +(defmethod inspect citb-arm-a ((obj citb-arm-a)) + (let ((t9-0 (method-of-type citb-arm inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-arm-b +(deftype citb-arm-b (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-b +(defmethod inspect citb-arm-b ((obj citb-arm-b)) + (let ((t9-0 (method-of-type citb-arm inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-arm-c +(deftype citb-arm-c (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-c +(defmethod inspect citb-arm-c ((obj citb-arm-c)) + (let ((t9-0 (method-of-type citb-arm inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-arm-d +(deftype citb-arm-d (citb-arm) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-d +(defmethod inspect citb-arm-d ((obj citb-arm-d)) + (let ((t9-0 (method-of-type citb-arm inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-arm-shoulder-a +(deftype citb-arm-shoulder-a (citb-arm-shoulder) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-shoulder-a +(defmethod inspect citb-arm-shoulder-a ((obj citb-arm-shoulder-a)) + (let ((t9-0 (method-of-type citb-arm-shoulder inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-arm-shoulder-b +(deftype citb-arm-shoulder-b (citb-arm-shoulder) + () + :heap-base #x70 + :method-count-assert 23 + :size-assert #xdc + :flag-assert #x17007000dc + ) + +;; definition for method 3 of type citb-arm-shoulder-b +(defmethod inspect citb-arm-shoulder-b ((obj citb-arm-shoulder-b)) + (let ((t9-0 (method-of-type citb-arm-shoulder inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 21 of type citb-arm-a +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-a ((obj citb-arm-a)) + (initialize-skeleton obj *citb-arm-a-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-a 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -184320.0) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-b +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-b ((obj citb-arm-b)) + (initialize-skeleton obj *citb-arm-b-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-b 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -225280.0) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-c +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-c ((obj citb-arm-c)) + (initialize-skeleton obj *citb-arm-c-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-c 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -266240.0) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-d +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-d ((obj citb-arm-d)) + (initialize-skeleton obj *citb-arm-d-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-d 21)) obj) + (set! (-> obj root-override root-prim local-sphere z) -307200.0) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-shoulder-a +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-shoulder-a ((obj citb-arm-shoulder-a)) + (initialize-skeleton obj *citb-arm-shoulder-a-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-shoulder-a 21)) + (the-as citb-arm obj) + ) + 0 + (none) + ) + +;; definition for method 21 of type citb-arm-shoulder-b +;; INFO: Return type mismatch int vs none. +(defmethod setup-new-process! citb-arm-shoulder-b ((obj citb-arm-shoulder-b)) + (initialize-skeleton obj *citb-arm-shoulder-b-sg* '()) + ((the-as (function citb-arm none) (find-parent-method citb-arm-shoulder-b 21)) + (the-as citb-arm obj) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-disc-a-sg* citb-disc + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-disc-b-sg* citb-disc + 5 + 9 + ((6 (meters 20)) (7 (meters 40)) (8 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-disc-c-sg* citb-disc + 10 + 14 + ((11 (meters 20)) (12 (meters 40)) (13 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 11) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-disc-d-sg* citb-disc + 15 + 19 + ((16 (meters 20)) (17 (meters 40)) (18 (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 8) + ) + +;; definition of type citb-disc +(deftype citb-disc (process-drawable) + ((root-override collide-shape-moving :offset 112) + (sync sync-info :inline :offset-assert 176) + (rot-scale float :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) + +;; definition for method 3 of type citb-disc +(defmethod inspect citb-disc ((obj citb-disc)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Trot-scale: ~f~%" (-> obj rot-scale)) + obj + ) + +;; failed to figure out what this is: +(defstate citb-disc-idle (citb-disc) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'touch) + (send-event arg0 'no-look-around 75) + #f + ) + ) + ) + ) + :trans + (the-as (function none :behavior citb-disc) rider-trans) + :code + (behavior () + (while #t + (update! (-> self sound)) + (quaternion-axis-angle! + (-> self root-override quat) + 0.0 + 1.0 + 0.0 + (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-disc) rider-post) + ) + +;; definition for method 20 of type citb-disc +;; INFO: Return type mismatch int vs none. +(defmethod init! citb-disc ((obj citb-disc)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 19)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 21 of type citb-disc +;; INFO: Return type mismatch int vs none. +(defmethod dummy-21 citb-disc ((obj citb-disc)) + 0 + (none) + ) + +;; definition for method 11 of type citb-disc +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citb-disc ((obj citb-disc) (arg0 res-lump)) + (init! obj) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (cond + ((> (-> obj sync period) 0) + (set! (-> obj rot-scale) 1.0) + ) + (else + (set! (-> obj rot-scale) -1.0) + (let ((v1-8 (abs (the-as int (-> obj sync period))))) + (set! (-> obj sync period) (the-as uint v1-8)) + ) + ) + ) + (dummy-21 obj) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "rotate-plat") + :volume #x400 + :fo-max 20 + ) + (-> obj root-override trans) + ) + ) + (logior! (-> obj skel status) 1) + (go citb-disc-idle) + (none) + ) + +;; definition of type citb-disc-a +(deftype citb-disc-a (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + +;; definition for method 3 of type citb-disc-a +(defmethod inspect citb-disc-a ((obj citb-disc-a)) + (let ((t9-0 (method-of-type citb-disc inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-disc-b +(deftype citb-disc-b (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + +;; definition for method 3 of type citb-disc-b +(defmethod inspect citb-disc-b ((obj citb-disc-b)) + (let ((t9-0 (method-of-type citb-disc inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-disc-c +(deftype citb-disc-c (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + +;; definition for method 3 of type citb-disc-c +(defmethod inspect citb-disc-c ((obj citb-disc-c)) + (let ((t9-0 (method-of-type citb-disc inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type citb-disc-d +(deftype citb-disc-d (citb-disc) + () + :heap-base #x50 + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16005000bc + ) + +;; definition for method 3 of type citb-disc-d +(defmethod inspect citb-disc-d ((obj citb-disc-d)) + (let ((t9-0 (method-of-type citb-disc inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 21 of type citb-disc-a +;; INFO: Return type mismatch int vs none. +(defmethod dummy-21 citb-disc-a ((obj citb-disc-a)) + (initialize-skeleton obj *citb-disc-a-sg* '()) + 0 + (none) + ) + +;; definition for method 21 of type citb-disc-b +;; INFO: Return type mismatch int vs none. +(defmethod dummy-21 citb-disc-b ((obj citb-disc-b)) + (initialize-skeleton obj *citb-disc-b-sg* '()) + 0 + (none) + ) + +;; definition for method 21 of type citb-disc-c +;; INFO: Return type mismatch int vs none. +(defmethod dummy-21 citb-disc-c ((obj citb-disc-c)) + (initialize-skeleton obj *citb-disc-c-sg* '()) + 0 + (none) + ) + +;; definition for method 21 of type citb-disc-d +;; INFO: Return type mismatch int vs none. +(defmethod dummy-21 citb-disc-d ((obj citb-disc-d)) + (initialize-skeleton obj *citb-disc-d-sg* '()) + 0 + (none) + ) + +;; definition of type citb-iris-door +(deftype citb-iris-door (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + +;; definition for method 3 of type citb-iris-door +(defmethod inspect citb-iris-door ((obj citb-iris-door)) + (let ((t9-0 (method-of-type eco-door inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *citb-iris-door-sg* citb-iris-door + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; definition for method 24 of type citb-iris-door +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-24 citb-iris-door ((obj citb-iris-door)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 25 of type citb-iris-door +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-25 citb-iris-door ((obj citb-iris-door)) + (initialize-skeleton obj *citb-iris-door-sg* '()) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (set! (-> obj auto-close) #t) + (process-entity-status! obj (entity-perm-status complete) #t) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-button-sg* citb-button + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +;; definition of type citb-button +(deftype citb-button (basebutton) + () + :heap-base #x90 + :method-count-assert 32 + :size-assert #x100 + :flag-assert #x2000900100 + ) + +;; definition for method 3 of type citb-button +(defmethod inspect citb-button ((obj citb-button)) + (let ((t9-0 (method-of-type basebutton inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 27 of type citb-button +;; INFO: Return type mismatch int vs collide-shape-moving. +(defmethod TODO-RENAME-27 citb-button ((obj citb-button)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) nothing) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + (the-as collide-shape-moving 0) + ) + +;; definition for method 26 of type citb-button +(defmethod TODO-RENAME-26 citb-button ((obj citb-button)) + (initialize-skeleton obj *citb-button-sg* '()) + (logior! (-> obj skel status) 1) + (ja-channel-set! 1) + (cond + ((-> obj down?) + (let ((s5-0 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-0 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! + (-> s5-0 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> obj draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + (else + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + ) + ) + (set! (-> obj anim-speed) 2.0) + (set! (-> obj timeout) 1.0) + (dummy-47 (-> obj root-override)) + (ja-post) + (none) + ) + +;; definition of type citb-launcher +(deftype citb-launcher (plat) + ((launcher (pointer launcher) :offset-assert 264) + ) + :heap-base #xa0 + :method-count-assert 33 + :size-assert #x10c + :flag-assert #x2100a0010c + ) + +;; definition for method 3 of type citb-launcher +(defmethod inspect citb-launcher ((obj citb-launcher)) + (let ((t9-0 (method-of-type plat inspect))) + (t9-0 obj) + ) + (format #t "~T~Tlauncher: #x~X~%" (-> obj launcher)) + obj + ) + +;; failed to figure out what this is: +(defstate plat-path-active (citb-launcher) + :virtual #t + :post + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-path-active) post))) + (if t9-0 + ((the-as (function none :behavior citb-launcher) t9-0)) + ) + ) + (send-event + (ppointer->process (-> self launcher)) + 'trans + (-> self basetrans) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-launcher-sg* citb-launcher + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +;; definition for method 23 of type citb-launcher +(defmethod get-unlit-skel citb-launcher ((obj citb-launcher)) + *citb-launcher-sg* + ) + +;; definition for method 26 of type citb-launcher +;; INFO: Return type mismatch int vs none. +(defmethod dummy-26 citb-launcher ((obj citb-launcher)) + (let + ((f30-0 (res-lump-float (-> obj entity) 'spring-height :default 163840.0)) + (s5-0 (res-lump-value (-> obj entity) 'mode uint128)) + (s4-0 (get-process *default-dead-pool* launcher #x4000)) + ) + (set! (-> obj launcher) (the-as (pointer launcher) (when s4-0 + (let + ((t9-3 + (method-of-type + launcher + activate + ) + ) + ) + (t9-3 + (the-as launcher s4-0) + obj + 'launcher + (the-as + pointer + #x70004000 + ) + ) + ) + (run-now-in-process + s4-0 + launcher-init-by-other + (-> + obj + root-override + trans + ) + f30-0 + s5-0 + 81920.0 + ) + (-> s4-0 ppointer) + ) + ) + ) + ) + (set! (-> obj root-override root-prim local-sphere w) 18432.0) + (logclear! (-> obj mask) (process-mask actor-pause)) + 0 + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-sg* citb-robotboss + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 17 0 18) + :longest-edge (meters 6) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-head-sg* citb-robotboss + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 30 10 12) + :longest-edge (meters 2) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-nose-sg* citb-robotboss + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 10 20 15) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-gun-sg* citb-robotboss + 9 + 11 + ((10 (meters 999999))) + :bounds (static-spherem 0 28 -10 14) + :longest-edge (meters 5) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-leftshoulder-sg* citb-robotboss + 12 + 14 + ((13 (meters 999999))) + :bounds (static-spherem 17 27 0 14) + :longest-edge (meters 6) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-rightshoulder-sg* citb-robotboss + 15 + 17 + ((16 (meters 999999))) + :bounds (static-spherem -17 27 0 14) + :longest-edge (meters 6) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-leftarm-sg* citb-robotboss + 18 + 20 + ((19 (meters 999999))) + :bounds (static-spherem 15 5 -10 20) + :longest-edge (meters 9) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-rightarm-sg* citb-robotboss + 21 + 23 + ((22 (meters 999999))) + :bounds (static-spherem -15 0 -8 16) + :longest-edge (meters 3) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-robotboss-belly-sg* citb-robotboss + 24 + 26 + ((25 (meters 999999))) + :bounds (static-spherem 0 -2 3 10) + :longest-edge (meters 3) + ) + +;; definition of type citb-robotboss +(deftype citb-robotboss (process-drawable) + ((root-override collide-shape :offset 112) + (shield-on symbol :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; definition for method 3 of type citb-robotboss +(defmethod inspect citb-robotboss ((obj citb-robotboss)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tshield-on: ~A~%" (-> obj shield-on)) + obj + ) + +;; failed to figure out what this is: +(defstate citb-robotboss-idle (citb-robotboss) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (sv-96 int) (sv-112 int)) + (the-as object (cond + ((= arg2 'shield-off) + (stop! (-> self sound)) + (if (-> self shield-on) + (sound-play-by-name + (static-sound-name "robotcage-off") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (set! (-> self shield-on) #f) + #f + ) + ((= arg2 'shield-on) + (let ((v0-3 #t)) + (set! (-> self shield-on) v0-3) + v0-3 + ) + ) + ((= arg2 'die) + (dummy-18 self) + (the-as symbol (deactivate self)) + ) + ((or (= arg2 'touch) (= arg2 'attack)) + (let ((s4-0 sound-play-by-name) + (s3-0 + (make-u128 #x7061 (the-as uint #x7a2d646c65696873)) + ) + (s2-0 (new-sound-id)) + (s1-0 1024) + (s0-0 0) + ) + (set! sv-96 0) + (set! sv-112 1) + (let ((t2-1 (target-pos 0))) + (s4-0 + (the-as sound-name s3-0) + s2-0 + s1-0 + s0-0 + sv-96 + sv-112 + (the-as symbol t2-1) + ) + ) + ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'shove) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (let ((v1-21 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-21 shove-up) 8192.0) + (set! (-> v1-21 shove-back) 12288.0) + (set! (-> a1-3 param 1) (the-as uint v1-21)) + ) + (the-as symbol (send-event-function arg0 a1-3)) + ) + ) + ) + ) + ) + :code + (behavior () + (let* ((s5-0 (get-process *default-dead-pool* manipy #x4000)) + (gp-0 (when s5-0 + (let ((t9-1 (method-of-type manipy activate))) + (t9-1 + (the-as manipy s5-0) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-nose-sg* + #f + ) + (-> s5-0 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-0) 'anim-mode 'loop) + (send-event + (ppointer->process gp-0) + 'art-joint-anim + "citb-robotboss-nose-idle" + 0 + ) + (send-event (ppointer->process gp-0) 'draw #t) + ) + (let* ((s5-1 (get-process *default-dead-pool* manipy #x4000)) + (gp-1 (when s5-1 + (let ((t9-7 (method-of-type manipy activate))) + (t9-7 + (the-as manipy s5-1) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-head-sg* + #f + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-1) 'anim-mode 'loop) + (send-event + (ppointer->process gp-1) + 'art-joint-anim + "citb-robotboss-head-idle" + 0 + ) + (send-event (ppointer->process gp-1) 'draw #t) + ) + (let* ((s5-2 (get-process *default-dead-pool* manipy #x4000)) + (gp-2 (when s5-2 + (let ((t9-13 (method-of-type manipy activate))) + (t9-13 + (the-as manipy s5-2) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-2 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-gun-sg* + #f + ) + (-> s5-2 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-2) 'anim-mode 'loop) + (send-event + (ppointer->process gp-2) + 'art-joint-anim + "citb-robotboss-gun-idle" + 0 + ) + (send-event (ppointer->process gp-2) 'draw #t) + ) + (let* ((s5-3 (get-process *default-dead-pool* manipy #x4000)) + (gp-3 (when s5-3 + (let ((t9-19 (method-of-type manipy activate))) + (t9-19 + (the-as manipy s5-3) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-3 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-leftshoulder-sg* + #f + ) + (-> s5-3 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-3) 'anim-mode 'loop) + (send-event + (ppointer->process gp-3) + 'art-joint-anim + "citb-robotboss-leftshoulder-idle" + 0 + ) + (send-event (ppointer->process gp-3) 'draw #t) + ) + (let* ((s5-4 (get-process *default-dead-pool* manipy #x4000)) + (gp-4 (when s5-4 + (let ((t9-25 (method-of-type manipy activate))) + (t9-25 + (the-as manipy s5-4) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-4 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-rightshoulder-sg* + #f + ) + (-> s5-4 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-4) 'anim-mode 'loop) + (send-event + (ppointer->process gp-4) + 'art-joint-anim + "citb-robotboss-rightshoulder-idle" + 0 + ) + (send-event (ppointer->process gp-4) 'draw #t) + ) + (let* ((s5-5 (get-process *default-dead-pool* manipy #x4000)) + (gp-5 (when s5-5 + (let ((t9-31 (method-of-type manipy activate))) + (t9-31 + (the-as manipy s5-5) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-5 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-leftarm-sg* + #f + ) + (-> s5-5 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-5) 'anim-mode 'loop) + (send-event + (ppointer->process gp-5) + 'art-joint-anim + "citb-robotboss-leftarm-idle" + 0 + ) + (send-event (ppointer->process gp-5) 'draw #t) + ) + (let* ((s5-6 (get-process *default-dead-pool* manipy #x4000)) + (gp-6 (when s5-6 + (let ((t9-37 (method-of-type manipy activate))) + (t9-37 + (the-as manipy s5-6) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-6 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-rightarm-sg* + #f + ) + (-> s5-6 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-6) 'anim-mode 'loop) + (send-event + (ppointer->process gp-6) + 'art-joint-anim + "citb-robotboss-rightarm-idle" + 0 + ) + (send-event (ppointer->process gp-6) 'draw #t) + ) + (let* ((s5-7 (get-process *default-dead-pool* manipy #x4000)) + (gp-7 (when s5-7 + (let ((t9-43 (method-of-type manipy activate))) + (t9-43 + (the-as manipy s5-7) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-7 + manipy-init + (-> self root-override trans) + (-> self entity) + *citb-robotboss-belly-sg* + #f + ) + (-> s5-7 ppointer) + ) + ) + ) + (send-event (ppointer->process gp-7) 'anim-mode 'loop) + (send-event + (ppointer->process gp-7) + 'art-joint-anim + "citb-robotboss-belly-idle" + 0 + ) + (send-event (ppointer->process gp-7) 'draw #t) + ) + (dummy-47 (-> self root-override)) + (while #t + (when (-> self shield-on) + (update! (-> self sound)) + (spawn (-> self part) (-> self root-override trans)) + (set! (-> *palette-fade-controls* control 7 fade) 1.0) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-robotboss) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-robotboss-die (citb-robotboss) + :code + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; definition for method 11 of type citb-robotboss +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citb-robotboss ((obj citb-robotboss) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-robotboss-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 601) obj) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj shield-on) #t) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "robotcage-lp") + :volume #x400 + :fo-max #x96 + ) + (-> obj root-override trans) + ) + ) + (if + (= (get-task-status (-> obj entity extra perm task)) (task-status invalid)) + (go citb-robotboss-die) + (go citb-robotboss-idle) + ) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-coil-sg* citb-coil + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +;; definition of type citb-coil +(deftype citb-coil (process-drawable) + ((part-off sparticle-launch-control :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; definition for method 3 of type citb-coil +(defmethod inspect citb-coil ((obj citb-coil)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tpart-off: ~A~%" (-> obj part-off)) + obj + ) + +;; definition for method 7 of type citb-coil +;; INFO: Return type mismatch process-drawable vs citb-coil. +(defmethod relocate citb-coil ((obj citb-coil) (arg0 int)) + (if (nonzero? (-> obj part-off)) + (&+! (-> obj part-off) arg0) + ) + (the-as citb-coil ((method-of-type process-drawable relocate) obj arg0)) + ) + +;; definition for method 10 of type citb-coil +(defmethod deactivate citb-coil ((obj citb-coil)) + (if (nonzero? (-> obj part-off)) + (kill-and-free-particles (-> obj part-off)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +;; failed to figure out what this is: +(defstate citb-coil-idle (citb-coil) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go citb-coil-break) + ) + ) + ) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate citb-coil-break (citb-coil) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 30) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go citb-coil-broken) + (none) + ) + :post + (the-as (function none :behavior citb-coil) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-coil-broken (citb-coil) + :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 5)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + 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 5)) + 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! + ) + ) + ) + (while #t + (spawn (-> self part-off) (-> self root trans)) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-coil) ja-post) + ) + +;; definition for method 11 of type citb-coil +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citb-coil ((obj citb-coil) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-coil-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 596) obj) + ) + (set! + (-> obj part-off) + (create-launch-control (-> *part-group-id-table* 602) obj) + ) + (let + ((v1-9 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-9)) + (set! v1-9 (-> obj entity)) + ) + (if (logtest? (-> v1-9 extra perm status) (entity-perm-status complete)) + (go citb-coil-broken) + (go citb-coil-idle) + ) + ) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-hose-sg* citb-hose + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +;; definition of type citb-hose +(deftype citb-hose (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type citb-hose +(defmethod inspect citb-hose ((obj citb-hose)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for function citb-hose-event-handler +(defbehavior + citb-hose-event-handler citb-hose + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('spawn) + (go citb-hose-spawn) + ) + (('trigger) + (go citb-hose-die) + ) + ) + ) + +;; failed to figure out what this is: +(defstate citb-hose-idle (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + 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 3)) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-hose-spawn (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (ja-channel-push! 1 30) + (let ((a0-1 (-> self skel root-channel 0))) + (set! + (-> a0-1 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-1 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-1 param 1) 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 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go citb-hose-idle) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-hose-die (citb-hose) + :event + citb-hose-event-handler + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 30) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (anim-loop) + (none) + ) + :post + (the-as (function none :behavior citb-hose) ja-post) + ) + +;; definition for method 11 of type citb-hose +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citb-hose ((obj citb-hose) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *citb-hose-sg* '()) + (let + ((v1-3 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-3)) + (set! v1-3 (-> obj entity)) + ) + (if (logtest? (-> v1-3 extra perm status) (entity-perm-status complete)) + (go citb-hose-die) + (go citb-hose-idle) + ) + ) + (none) + ) + +;; definition of type citb-chains +(deftype citb-chains (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + +;; definition for method 3 of type citb-chains +(defmethod inspect citb-chains ((obj citb-chains)) + (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 *citb-generator-sg* citb-generator + 0 + 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *citb-generator-broken-sg* citb-generator + 2 + 4 + ((3 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +;; definition of type citb-generator +(deftype citb-generator (process-drawable) + ((root-override collide-shape :offset 112) + (normal-look lod-set :inline :offset-assert 176) + (broken-look lod-set :inline :offset-assert 212) + (mushroom-pos vector :inline :offset-assert 256) + (mushroom symbol :offset-assert 272) + (birth-fuel-cell symbol :offset-assert 276) + (trigger-others symbol :offset-assert 280) + (part-broken sparticle-launch-control :offset-assert 284) + (part-mushroom sparticle-launch-control :offset-assert 288) + ) + :heap-base #xc0 + :method-count-assert 22 + :size-assert #x124 + :flag-assert #x1600c00124 + (:methods + (init! (_type_) none 20) + (dummy-21 (_type_) none 21) + ) + ) + +;; definition for method 3 of type citb-generator +(defmethod inspect citb-generator ((obj citb-generator)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tnormal-look: #~%" (-> obj normal-look)) + (format #t "~T~Tbroken-look: #~%" (-> obj broken-look)) + (format #t "~T~Tmushroom-pos: #~%" (-> obj mushroom-pos)) + (format #t "~T~Tmushroom: ~A~%" (-> obj mushroom)) + (format #t "~T~Tbirth-fuel-cell: ~A~%" (-> obj birth-fuel-cell)) + (format #t "~T~Ttrigger-others: ~A~%" (-> obj trigger-others)) + (format #t "~T~Tpart-broken: ~A~%" (-> obj part-broken)) + (format #t "~T~Tpart-mushroom: ~A~%" (-> obj part-mushroom)) + obj + ) + +;; definition for method 7 of type citb-generator +;; INFO: Return type mismatch process-drawable vs citb-generator. +(defmethod relocate citb-generator ((obj citb-generator) (arg0 int)) + (if (nonzero? (-> obj part-broken)) + (&+! (-> obj part-broken) arg0) + ) + (if (nonzero? (-> obj part-mushroom)) + (&+! (-> obj part-mushroom) arg0) + ) + (the-as citb-generator ((method-of-type process-drawable relocate) obj arg0)) + ) + +;; definition for method 10 of type citb-generator +(defmethod deactivate citb-generator ((obj citb-generator)) + (if (nonzero? (-> obj part-broken)) + (kill-and-free-particles (-> obj part-broken)) + ) + (if (nonzero? (-> obj part-mushroom)) + (kill-and-free-particles (-> obj part-mushroom)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +;; definition for function citb-generator-trigger-others +;; INFO: Return type mismatch int vs none. +(defbehavior citb-generator-trigger-others citb-generator () + (let ((gp-0 (entity-actor-count (-> self entity) 'alt-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'alt-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + (let ((gp-1 (-> *display* base-frame-counter))) + (while (< (- (-> *display* base-frame-counter) gp-1) 150) + (if (movie?) + (set! gp-1 (-> *display* base-frame-counter)) + ) + (suspend) + ) + ) + (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-1 gp-2) + (let ((s4-1 (entity-actor-lookup (-> self entity) 'trigger-actor s5-1)) + (a1-6 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 0) + (set! (-> a1-6 message) 'trigger) + (let ((t9-8 send-event-function) + (v1-19 s4-1) + ) + (when (not (t9-8 (if v1-19 + (-> v1-19 extra process) + ) + a1-6 + ) + ) + (entity-birth-no-kill s4-1) + (suspend) + (send-event (if s4-1 + (-> s4-1 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate citb-generator-idle (citb-generator) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (-> self mushroom) + (increment-success-for-hint (game-text-id citadel-break-generator-hint)) + (increment-success-for-hint + (game-text-id citadel-break-generators-reminder) + ) + ) + (go citb-generator-break) + ) + (('trigger) + #t + ) + ) + ) + :exit + (behavior () + (stop! (-> self sound)) + (none) + ) + :code + (behavior () + (lods-assign! (-> self draw) (-> self normal-look)) + (dummy-47 (-> self root-override)) + (while #t + (spawn (-> self part) (-> self root-override trans)) + (update! (-> self sound)) + (if (-> self mushroom) + (spawn (-> self part-mushroom) (-> self mushroom-pos)) + ) + (if (not (-> self mushroom)) + (set! + (-> *palette-fade-controls* control 3 fade) + (+ 0.3333 (-> *palette-fade-controls* control 3 fade)) + ) + ) + (when + (and + *target* + (>= + 32768.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (if (-> self mushroom) + (level-hint-spawn + (game-text-id citadel-break-generator-hint) + "sksp0381" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id citadel-break-generators-reminder) + "sksp0384" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior citb-generator) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-generator-break (citb-generator) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'open-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'open-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'open) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'open + ) + ) + ) + ) + ) + ) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-7 (method-of-type part-tracker activate))) + (t9-7 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 598) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (sound-play-by-name + (static-sound-name "sagecage-open") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (go citb-generator-broken) + (none) + ) + :post + (the-as (function none :behavior citb-generator) ja-post) + ) + +;; failed to figure out what this is: +(defstate citb-generator-broken (citb-generator) + :code + (behavior () + (lods-assign! (-> self draw) (-> self broken-look)) + (dummy-47 (-> self root-override)) + (cond + ((-> self birth-fuel-cell) + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #t) + (when (-> self child) + (while (-> self child) + (suspend) + ) + (citb-generator-trigger-others) + ) + ) + (else + (citb-generator-trigger-others) + ) + ) + (anim-loop) + (none) + ) + :post + (behavior () + (spawn (-> self part-broken) (-> self root-override trans)) + (ja-post) + (none) + ) + ) + +;; definition for method 20 of type citb-generator +;; INFO: Return type mismatch int vs none. +(defmethod init! citb-generator ((obj citb-generator)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 21 of type citb-generator +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod dummy-21 citb-generator ((obj citb-generator)) + (initialize-skeleton obj *citb-generator-sg* '()) + (dummy-9 + (-> obj normal-look) + *citb-generator-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (dummy-9 + (-> obj broken-look) + *citb-generator-broken-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! + (-> obj birth-fuel-cell) + (< (the-as uint 1) (the-as uint (-> obj entity extra perm task))) + ) + (set! (-> obj trigger-others) #f) + (set! (-> obj mushroom-pos quad) (-> obj root-override trans quad)) + (let ((f30-0 0.0)) + (cond + ((name= (-> obj name) "citb-generator-1") + (set! (-> obj mushroom) #t) + (set! f30-0 21845.334) + ) + ((name= (-> obj name) "citb-generator-2") + (set! (-> obj mushroom) #t) + (set! f30-0 16384.0) + ) + ((name= (-> obj name) "citb-generator-3") + (set! (-> obj mushroom) #t) + (set! f30-0 16384.0) + ) + ((name= (-> obj name) "citb-generator-4") + (set! (-> obj mushroom) #t) + (set! f30-0 -5461.3335) + ) + (else + (set! (-> obj mushroom) #f) + ) + ) + (when (-> obj mushroom) + (+! (-> obj mushroom-pos x) (* 19251.2 (sin f30-0))) + (+! (-> obj mushroom-pos z) (* 19251.2 (cos f30-0))) + ) + ) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 600) obj) + ) + (set! + (-> obj part-broken) + (create-launch-control (-> *part-group-id-table* 597) obj) + ) + (set! + (-> obj part-mushroom) + (create-launch-control (-> *part-group-id-table* 599) obj) + ) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "mushroom-gen") + :volume #x400 + :fo-max 20 + ) + (-> obj root-override trans) + ) + ) + 0 + (none) + ) + +;; definition for method 11 of type citb-generator +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citb-generator ((obj citb-generator) (arg0 res-lump)) + (init! obj) + (process-drawable-from-entity! obj arg0) + (dummy-21 obj) + (let + ((v1-4 (the-as entity (entity-actor-lookup (-> obj entity) 'state-actor 0)))) + (if (not (the-as entity-actor v1-4)) + (set! v1-4 (-> obj entity)) + ) + (if (logtest? (-> v1-4 extra perm status) (entity-perm-status complete)) + (go citb-generator-broken) + (go citb-generator-idle) + ) + ) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *citadelcam-sg* citadelcam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 0) + ) + +;; definition of type citadelcam +(deftype citadelcam (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type citadelcam +(defmethod inspect citadelcam ((obj citadelcam)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate citadelcam-idle (citadelcam) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (when + (and + (task-complete? *game-info* (game-task citadel-sage-blue)) + (task-complete? *game-info* (game-task citadel-sage-red)) + (task-complete? *game-info* (game-task citadel-sage-yellow)) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go citadelcam-stair-plats) + ) + ) + ) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (anim-loop) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate citadelcam-stair-plats (citadelcam) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-1 s4-0) + ) + (when (not (t9-2 (if v1-1 + (-> v1-1 extra process) + ) + a1-2 + ) + ) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 + (-> s4-0 extra process) + ) + 'trigger + ) + ) + ) + ) + ) + ) + (let* ((gp-1 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-2 (ppointer->handle (when gp-1 + (let + ((t9-6 (method-of-type pov-camera activate)) + ) + (t9-6 + (the-as pov-camera gp-1) + self + 'pov-camera + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + pov-camera-init-by-other + (-> self root trans) + *citadelcam-sg* + "citadelcam-stair-plats" + 0 + #f + '() + ) + (-> gp-1 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-2)) + (suspend) + ) + ) + (level-hint-spawn + (game-text-id citadel-climb-plat-hint) + "sksp0387" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (go citadelcam-idle) + (none) + ) + ) + +;; definition for method 11 of type citadelcam +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! citadelcam ((obj citadelcam) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go citadelcam-idle) + (none) + ) + +;; definition of type citb-battlecontroller +(deftype citb-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + +;; definition for method 3 of type citb-battlecontroller +(defmethod inspect citb-battlecontroller ((obj citb-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 (citb-battlecontroller) + :virtual #t + :code + (behavior () + (level-hint-spawn + (game-text-id citadel-lurker-bunny-alert) + "sksp0383" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (suspend) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let + ((t9-2 (method-of-type pov-camera activate)) + ) + (t9-2 + (the-as pov-camera gp-0) + self + 'pov-camera + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + pov-camera-init-by-other + (-> + (entity-by-name "citadelcam-1") + extra + trans + ) + *citadelcam-sg* + "citadel-bunnies" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (the-as handle gp-1)) 'mask 2048) + (while (handle->process (the-as handle gp-1)) + (set! (-> *target* state-flags) (logand -17 (-> *target* state-flags))) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate battlecontroller-die (citb-battlecontroller) + :virtual #t + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (let + ((t9-2 + (-> + (the-as + (state battlecontroller) + (find-parent-method citb-battlecontroller 26) + ) + code + ) + ) + ) + (if t9-2 + ((the-as (function none :behavior battlecontroller) t9-2)) + ) + ) + (none) + ) + ) + +;; definition for method 27 of type citb-battlecontroller +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-27 citb-battlecontroller ((obj citb-battlecontroller)) + ((the-as + (function battlecontroller none) + (find-parent-method citb-battlecontroller 27) + ) + obj + ) + (set! (-> obj activate-distance) 143360.0) + 0 + (none) + ) diff --git a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc index 3969151a34..9628282639 100644 --- a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc @@ -250,8 +250,8 @@ 1024 0 0 - (the-as uint 1) - gp-0 + 1 + (the-as symbol gp-0) ) ) (set! (-> self spin-angle) (* 10.0 (-> self spin-speed) (-> self interp))) @@ -299,8 +299,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the int (* 300.0 (rand-vu-float-range 0.2 0.3))))) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) gp-1) diff --git a/test/decompiler/reference/levels/common/basebutton_REF.gc b/test/decompiler/reference/levels/common/basebutton_REF.gc index 67c1a60c7c..e5519af9a5 100644 --- a/test/decompiler/reference/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/levels/common/basebutton_REF.gc @@ -114,8 +114,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -128,8 +128,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -181,8 +181,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -260,8 +260,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -308,8 +308,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-up) ) @@ -348,8 +348,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go-virtual basebutton-going-down) ) @@ -700,10 +700,10 @@ :size-assert #xc0 :flag-assert #x18005000c0 (:methods - (unknown-state00 () _type_ :state 20) - (dummy-21 () none 21) + (idle () _type_ :state 20) + (active () _type_ :state 21) (use (int level) _type_ :state 22) - (dummy-23 () none 23) + (hidden () _type_ :state 23) ) ) @@ -732,7 +732,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (when (not arg1) (process-release? *target*) - (go-virtual unknown-state00) + (go-virtual idle) ) (let ((s4-0 (new 'stack-no-clear 'event-message-block))) (set! (-> s4-0 from) self) diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index f7f38a8814..1105a46493 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -200,8 +200,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -212,8 +212,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -324,19 +324,11 @@ eco-door-event-handler 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) - (sound-play-by-name - (-> self open-sound) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) (dummy-48 (-> self root-override)) (until (ja-done? 0) (let ((a0-9 (-> self skel root-channel 0))) @@ -430,15 +422,7 @@ eco-door-event-handler (suspend) ) ) - (sound-play-by-name - (-> self close-sound) - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 1 #t) (until (ja-done? 0) (let ((a0-7 (-> self skel root-channel 0))) (set! (-> a0-7 param 0) 0.0) @@ -458,8 +442,8 @@ eco-door-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (go-virtual door-closed) diff --git a/test/decompiler/reference/levels/common/battlecontroller_REF.gc b/test/decompiler/reference/levels/common/battlecontroller_REF.gc index b994c1746a..e54e3ee89a 100644 --- a/test/decompiler/reference/levels/common/battlecontroller_REF.gc +++ b/test/decompiler/reference/levels/common/battlecontroller_REF.gc @@ -740,8 +740,8 @@ battlecontroller-default-event-handler 1024 -2286 0 - (the-as uint 1) - (the-as vector #f) + 1 + #f ) (battlecontroller-battle-end) (battlecontroller-camera-off) diff --git a/test/decompiler/reference/levels/common/plat-button_REF.gc b/test/decompiler/reference/levels/common/plat-button_REF.gc index 7f3e8dcdfe..d8b57e3be3 100644 --- a/test/decompiler/reference/levels/common/plat-button_REF.gc +++ b/test/decompiler/reference/levels/common/plat-button_REF.gc @@ -61,7 +61,7 @@ 0 2 ((1 (meters 999999))) - :bounds (static-spherem 0 -1 0 6.6) + :bounds (static-spherem 0 -1 0 6.599999904632568) :longest-edge (meters 0) ) @@ -376,8 +376,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-1 command) (sound-command set-param)) @@ -489,8 +489,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-1 command) (sound-command set-param)) @@ -540,8 +540,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (while #t (if diff --git a/test/decompiler/reference/levels/common/plat_REF.gc b/test/decompiler/reference/levels/common/plat_REF.gc index c4841c72f5..73813cd621 100644 --- a/test/decompiler/reference/levels/common/plat_REF.gc +++ b/test/decompiler/reference/levels/common/plat_REF.gc @@ -126,7 +126,7 @@ 0 4 ((1 (meters 999999))) - :bounds (static-spherem 0 -0.5 0 3.2) + :bounds (static-spherem 0 -0.5 0 3.200000047683716) :longest-edge (meters 0) ) @@ -333,8 +333,8 @@ 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) (plat-trans) diff --git a/test/decompiler/reference/levels/common/rigid-body_REF.gc b/test/decompiler/reference/levels/common/rigid-body_REF.gc index ce76f63724..8f59bceaa4 100644 --- a/test/decompiler/reference/levels/common/rigid-body_REF.gc +++ b/test/decompiler/reference/levels/common/rigid-body_REF.gc @@ -368,7 +368,7 @@ (cm-joint-z meters :offset-assert 88) (idle-distance meters :offset-assert 92) (platform symbol :offset-assert 96) - (sound-name symbol :offset-assert 100) + (sound-name string :offset-assert 100) ) :method-count-assert 9 :size-assert #x68 @@ -933,13 +933,13 @@ ) (if (-> self player-impulse) (sound-play-by-name - (string->sound-name (the-as string (-> self info sound-name))) + (string->sound-name (-> self info sound-name)) (new-sound-id) 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (TODO-RENAME-28 self) diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index fd7228be4a..eba874b92d 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -591,8 +591,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> gp-0 quad) (-> self collide-info trans quad)) @@ -845,8 +845,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (while #t (let ((a0-3 (-> self skel root-channel 0))) @@ -936,8 +936,8 @@ nav-enemy-default-event-handler 1024 (the int (* 1524.0 f0-2)) 0 - (the-as uint 1) - (-> self collide-info trans) + 1 + (the-as symbol (-> self collide-info trans)) ) ) (none) diff --git a/test/decompiler/reference/levels/common/ticky_REF.gc b/test/decompiler/reference/levels/common/ticky_REF.gc index 431f02ac92..8a5513ea8f 100644 --- a/test/decompiler/reference/levels/common/ticky_REF.gc +++ b/test/decompiler/reference/levels/common/ticky_REF.gc @@ -72,8 +72,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/common/water-anim_REF.gc b/test/decompiler/reference/levels/common/water-anim_REF.gc index e4b14f8da1..30c7707257 100644 --- a/test/decompiler/reference/levels/common/water-anim_REF.gc +++ b/test/decompiler/reference/levels/common/water-anim_REF.gc @@ -5,7 +5,7 @@ (deftype water-anim (water-vol) ((ppointer-water-anim (pointer water-anim) :offset 24) (look int32 :offset-assert 212) - (play-ambient-sound? basic :offset-assert 216) + (play-ambient-sound? symbol :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 @@ -451,7 +451,7 @@ 0 -1 ((1 (meters 999999))) - :bounds (static-spherem 0 0 0 0.7) + :bounds (static-spherem 0 0 0 0.699999988079071) :longest-edge (meters 0) ) diff --git a/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc new file mode 100644 index 0000000000..a7bb77d249 --- /dev/null +++ b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc @@ -0,0 +1,389 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type cavecrystal +(deftype cavecrystal (process-drawable) + ((root-override collide-shape :offset 112) + (is-master? symbol :offset-assert 176) + (crystal-id int32 :offset-assert 180) + (glow-u float :offset-assert 184) + (glow-wf-period int32 :offset-assert 188) + (glow-wf-offset int32 :offset-assert 192) + (prev-compute-glow-time uint64 :offset-assert 200) + (start-fade-time uint64 :offset-assert 208) + (end-fade-time uint64 :offset-assert 216) + (activated-time uint64 :offset-assert 224) + (last-updated-user-lighting uint64 :offset-assert 232) + (player-attack-id uint64 :offset-assert 240) + (on-color-mult vector :inline :offset-assert 256) + (on-color-emissive vector :inline :offset-assert 272) + (off-color-mult vector :inline :offset-assert 288) + (off-color-emissive vector :inline :offset-assert 304) + ) + :heap-base #xd0 + :method-count-assert 22 + :size-assert #x140 + :flag-assert #x1600d00140 + (:methods + (update-connected-crystals! (_type_) none 20) + (compute-glow (_type_) float 21) + ) + ) + +;; definition for method 3 of type cavecrystal +(defmethod inspect cavecrystal ((obj cavecrystal)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tis-master?: ~A~%" (-> obj is-master?)) + (format #t "~T~Tcrystal-id: ~D~%" (-> obj crystal-id)) + (format #t "~T~Tglow-u: ~f~%" (-> obj glow-u)) + (format #t "~T~Tglow-wf-period: ~D~%" (-> obj glow-wf-period)) + (format #t "~T~Tglow-wf-offset: ~D~%" (-> obj glow-wf-offset)) + (format #t "~T~Tprev-compute-glow-time: ~D~%" (-> obj prev-compute-glow-time)) + (format #t "~T~Tstart-fade-time: ~D~%" (-> obj start-fade-time)) + (format #t "~T~Tend-fade-time: ~D~%" (-> obj end-fade-time)) + (format #t "~T~Tactivated-time: ~D~%" (-> obj activated-time)) + (format + #t + "~T~Tlast-updated-user-lighting: ~D~%" + (-> obj last-updated-user-lighting) + ) + (format #t "~T~Tplayer-attack-id: ~D~%" (-> obj player-attack-id)) + (format #t "~T~Ton-color-mult: #~%" (-> obj on-color-mult)) + (format + #t + "~T~Ton-color-emissive: #~%" + (-> obj on-color-emissive) + ) + (format #t "~T~Toff-color-mult: #~%" (-> obj off-color-mult)) + (format + #t + "~T~Toff-color-emissive: #~%" + (-> obj off-color-emissive) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *cavecrystal-sg* cavecrystal + 0 + -1 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 4.699999809265137 0 5.400000095367432) + :longest-edge (meters 0) + ) + +;; definition for method 20 of type cavecrystal +;; INFO: Return type mismatch int vs none. +(defmethod update-connected-crystals! cavecrystal ((obj cavecrystal)) + (when (-> obj is-master?) + (let ((v1-2 (-> *display* base-frame-counter))) + (when (!= (-> obj last-updated-user-lighting) v1-2) + (set! (-> obj last-updated-user-lighting) (the-as uint v1-2)) + (execute-connections *cavecrystal-light-control*) + ) + ) + ) + (none) + ) + +;; definition for method 21 of type cavecrystal +(defmethod compute-glow cavecrystal ((obj cavecrystal)) + (set! + (-> obj prev-compute-glow-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (let* + ((gp-1 + (max + 1 + (the-as + int + (+ + (- 1 (the-as int (-> obj activated-time))) + (-> *display* game-frame-counter) + ) + ) + ) + ) + (f0-2 + (/ + (the + float + (mod + (+ (-> *display* base-frame-counter) (-> obj glow-wf-offset)) + (-> obj glow-wf-period) + ) + ) + (the float (-> obj glow-wf-period)) + ) + ) + (f30-1 (* 0.1 (cos (* 65536.0 f0-2)))) + ) + (cond + ((>= 20 (the-as int gp-1)) + (let ((v1-11 (* 0.05 (the float gp-1)))) + (fmax 0.0 (fmin 2.0 (+ (* 2.0 v1-11) (* v1-11 f30-1)))) + ) + ) + ((>= 180 (the-as int gp-1)) + (let ((a2-0 (* 0.00625 (the float (+ gp-1 -20))))) + (fmin 2.0 (+ (lerp 2.0 1.0 a2-0) f30-1)) + ) + ) + ((>= (the-as int (-> obj start-fade-time)) (the-as int gp-1)) + (+ 1.0 f30-1) + ) + (else + (let + ((v1-20 + (fmin 1.0 (* 0.004761905 (the float (- gp-1 (-> obj start-fade-time))))) + ) + ) + (fmax 0.0 (- (+ 1.0 (* (- 1.0 v1-20) f30-1)) v1-20)) + ) + ) + ) + ) + ) + +;; failed to figure out what this is: +(defstate cavecrystal-idle (cavecrystal) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (go cavecrystal-active) + ) + ) + ) + :trans + (behavior () + (if + (and + *target* + (>= + 40960.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (level-hint-spawn + (game-text-id darkcave-light-crystal-hint) + "sksp0333" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (update-connected-crystals! self) + (none) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +;; failed to figure out what this is: +(defstate cavecrystal-active (cavecrystal) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'attack) + (let ((v1-1 (-> arg3 param 2))) + (cond + ((!= v1-1 (-> self player-attack-id)) + (set! (-> self player-attack-id) v1-1) + (set! + (-> self activated-time) + (the-as uint (-> *display* game-frame-counter)) + ) + #t + ) + (else + #f + ) + ) + ) + ) + ) + ) + ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! + (-> self activated-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (set! + (-> self prev-compute-glow-time) + (the-as uint (-> *display* game-frame-counter)) + ) + (none) + ) + :exit + (behavior () + (stop! (-> self sound)) + (if (not (-> self is-master?)) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :trans + (behavior () + (let ((f30-0 (compute-glow self))) + (set! (-> self glow-u) f30-0) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f28-0 1.993) + ) + (let ((s5-0 (-> self draw color-mult))) + (vector-! gp-0 (-> self on-color-mult) (-> self off-color-mult)) + (vector+*! s5-0 (-> self off-color-mult) gp-0 f30-0) + (set! (-> s5-0 x) (fmax 0.0 (fmin (-> s5-0 x) f28-0))) + (set! (-> s5-0 y) (fmax 0.0 (fmin (-> s5-0 y) f28-0))) + (set! (-> s5-0 z) (fmax 0.0 (fmin (-> s5-0 z) f28-0))) + (set! (-> s5-0 w) 1.0) + ) + (let ((s5-1 (-> self draw color-emissive))) + (vector-! gp-0 (-> self on-color-emissive) (-> self off-color-emissive)) + (vector+*! s5-1 (-> self off-color-emissive) gp-0 f30-0) + (set! (-> s5-1 x) (fmax 0.0 (fmin (-> s5-1 x) f28-0))) + (set! (-> s5-1 y) (fmax 0.0 (fmin (-> s5-1 y) f28-0))) + (set! (-> s5-1 z) (fmax 0.0 (fmin (-> s5-1 z) f28-0))) + (set! (-> s5-1 w) 0.0) + ) + ) + (TODO-RENAME-9 + *cavecrystal-light-control* + (-> self crystal-id) + (-> self glow-u) + self + ) + (update-connected-crystals! self) + (when (>= 0.0 f30-0) + (level-hint-spawn + (game-text-id darkcave-light-crystal-low-light-hint) + "sksp0332" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (go cavecrystal-idle) + ) + ) + (update! (-> self sound)) + (none) + ) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +;; definition for method 10 of type cavecrystal +(defmethod deactivate cavecrystal ((obj cavecrystal)) + (if (nonzero? (-> obj sound)) + (stop! (-> obj sound)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +;; definition for method 11 of type cavecrystal +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defmethod copy-defaults! cavecrystal ((obj cavecrystal) (arg0 res-lump)) + (set! (-> obj glow-u) 0.0) + (set! (-> obj player-attack-id) (the-as uint 0)) + (set! (-> obj last-updated-user-lighting) (the-as uint 0)) + (set-vector! (-> obj off-color-mult) 0.0 0.0 0.0 1.0) + (set-vector! (-> obj off-color-emissive) 0.0 0.0 0.0 0.0) + (set-vector! (-> obj on-color-mult) 1.0 1.0 1.0 1.0) + (set-vector! (-> obj on-color-emissive) 0.0 0.0 0.0 0.0) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) 4915.2) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj crystal-id) (actor-count-before (-> obj link))) + (set! (-> obj is-master?) (= (-> obj crystal-id) 3)) + (set! (-> obj glow-wf-period) (rand-vu-int-range 225 375)) + (set! (-> obj glow-wf-offset) (rand-vu-int-range 0 300)) + (if (-> obj is-master?) + (logclear! (-> obj mask) (process-mask actor-pause)) + ) + (set! + (-> obj start-fade-time) + (the-as + uint + (the int (* 300.0 (res-lump-float (-> obj entity) 'timeout :default 8.0))) + ) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *cavecrystal-sg* '()) + (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) + (set! (-> obj draw color-mult quad) (-> obj off-color-mult quad)) + (set! (-> obj draw color-emissive quad) (-> obj off-color-emissive quad)) + (ja-channel-push! 1 0) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (ja-post) + (dummy-47 (-> obj root-override)) + (TODO-RENAME-9 *cavecrystal-light-control* (-> obj crystal-id) 0.0 obj) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "crystal-on") + :volume #x400 + :fo-max 80 + ) + (-> obj root-override trans) + ) + ) + (go cavecrystal-idle) + (none) + ) diff --git a/test/decompiler/reference/levels/finalboss/final-door_REF.gc b/test/decompiler/reference/levels/finalboss/final-door_REF.gc index 851298bbba..4624b89f22 100644 --- a/test/decompiler/reference/levels/finalboss/final-door_REF.gc +++ b/test/decompiler/reference/levels/finalboss/final-door_REF.gc @@ -429,8 +429,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (new 'stack 'trajectory))) (set! (-> self base y) (-> self jump-pos y)) @@ -477,8 +477,8 @@ 1024 3048 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-3 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-3 diff --git a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc index 9a0f22ce01..b009e47368 100644 --- a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc @@ -58,7 +58,7 @@ 0 -1 ((1 (meters 999999))) - :bounds (static-spherem 0 0 0 5.95) + :bounds (static-spherem 0 0 0 5.949999809265137) :longest-edge (meters 0) :shadow 2 ) @@ -703,8 +703,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -0.5 0.5))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (dummy-53 self) @@ -720,8 +720,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (cond ((zero? (nav-enemy-rnd-int-count 2)) @@ -841,8 +841,8 @@ 1024 (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((v1-4 (-> self draw shadow-ctrl))) (let ((a0-4 v1-4)) @@ -1128,8 +1128,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) (let ((v1-14 (-> self draw shadow-ctrl))) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc index e378b76e45..2ba1cb37cd 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc @@ -185,5 +185,5 @@ 2 ((1 (meters 999999))) :bounds (static-spherem 0 -10 0 80) - :longest-edge (meters 19.9) + :longest-edge (meters 19.899999618530273) ) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc index acd788a6d5..94662d2db2 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc @@ -7,7 +7,7 @@ 2 ((1 (meters 999999))) :bounds (static-spherem -360 100 100 380) - :longest-edge (meters 0.01) + :longest-edge (meters 0.009999999776482582) ) ;; failed to figure out what this is: diff --git a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc index 672464dbfd..caf21d5177 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc @@ -317,8 +317,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #f) + 1 + #f ) (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) (send-event (ppointer->process (-> self parent)) 'flash 255.0) @@ -483,8 +483,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -515,8 +515,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-2 (-> self skel root-channel 0))) (set! @@ -1148,8 +1148,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self draw status) (logand -3 (-> self draw status))) (quaternion-identity! (-> self root quat)) diff --git a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc index a77506947a..427aa8c670 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc @@ -1404,8 +1404,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -2819,8 +2819,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -4028,8 +4028,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -5330,8 +5330,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self blue-smoke) #t) (let ((gp-1 (new 'stack-no-clear 'vector))) diff --git a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc new file mode 100644 index 0000000000..311bbef4c4 --- /dev/null +++ b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc @@ -0,0 +1,960 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type balloon +(deftype balloon (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type balloon +(defmethod inspect balloon ((obj balloon)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 227) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x5dc + :name "group-balloon" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1006) + (sp-item 1007) + (sp-item 1008) + ) + :bounds (new 'static 'sphere :w 61440.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1007) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 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 3.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1008) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-flt spt-y (meters 2.0)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.08) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 75) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 1.5)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1006) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 12.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 80.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -0.08) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defstate balloon-popping (balloon) + :code + (behavior () + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "cool-balloon") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 227) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate balloon-idle (balloon) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (send-event arg0 'heat -10.0) + (go balloon-popping) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior balloon) ja-post) + ) + +;; definition for method 11 of type balloon +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! balloon ((obj balloon) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core offense) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *balloon-sg* '()) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 227) obj) + ) + (go balloon-idle) + (none) + ) + +;; definition of type spike +(deftype spike (process-drawable) + ((root-override collide-shape :offset 112) + (num-alts int32 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; definition for method 3 of type spike +(defmethod inspect spike ((obj spike)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tnum-alts: ~D~%" (-> obj num-alts)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *spike-sg* spike + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 8 0 10.199999809265137) + :longest-edge (meters 5) + ) + +;; failed to figure out what this is: +(defstate spike-up (spike) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (= v1-0 'go-spike-up) + #t + ) + ) + ) + ) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 (/ (-> self num-alts) 2)) + (gp-0 #t) + ) + (while (< s5-0 (+ (-> self num-alts) -1)) + (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if + (and + v1-2 + (-> v1-2 extra process) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function (if v1-2 + (-> v1-2 extra process) + ) + a1-1 + ) + ) + ) + ) + (set! gp-0 #f) + ) + ) + (+! s5-0 1) + ) + (when gp-0 + (set! (-> self num-alts) 0) + 0 + ) + ) + ) + (none) + ) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (transform-post) + (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! + ) + ) + ) + (while #t + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate spike-down (spike) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'go-spike-up) + (go spike-up) + #t + ) + ) + ) + ) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 0) + (gp-0 #t) + ) + (while (< s5-0 (/ (-> self num-alts) 2)) + (let ((v1-1 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if + (and + v1-1 + (-> v1-1 extra process) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function (if v1-1 + (-> v1-1 extra process) + ) + a1-1 + ) + ) + ) + ) + (set! gp-0 #f) + ) + ) + (+! s5-0 1) + ) + (when gp-0 + (set! (-> self num-alts) 0) + 0 + ) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate spike-idle (spike) + :trans + (behavior () + (when (and *target* (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'mode)) + (= (send-event-function *target* a1-0) 'racer) + ) + (< + (vector-vector-distance (-> self root-override trans) (target-pos 0)) + 225280.0 + ) + ) + (sound-play-by-name + (static-sound-name "magma-rock") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((v1-8 (entity-actor-count (-> self entity) 'alt-actor))) + 0 + (cond + ((>= 1 v1-8) + (go spike-up) + ) + ((let* ((v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-12 (the-as number (logior #x3f800000 v1-11))) + ) + (< (+ -1.0 (the-as float v1-12)) 0.5) + ) + (go spike-down) + ) + (else + (go spike-up) + ) + ) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (suspend) + ) + (none) + ) + ) + +;; definition for method 11 of type spike +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! spike ((obj spike) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 3) + (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 1)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) + ) + (dummy-28 s3-0) + (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 1)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 3) + (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *spike-sg* '()) + (set! (-> obj draw origin-joint-index) (the-as uint 3)) + (set! (-> obj num-alts) (entity-actor-count (-> obj entity) 'alt-actor)) + (if (zero? (-> obj num-alts)) + (go spike-down) + (go spike-idle) + ) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *crate-darkeco-cluster-sg* crate-darkeco-cluster + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 1.600000023841858 0 3.299999952316284) + :longest-edge (meters 0) + ) + +;; definition of type crate-darkeco-cluster +(deftype crate-darkeco-cluster (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) + +;; definition for method 3 of type crate-darkeco-cluster +(defmethod inspect crate-darkeco-cluster ((obj crate-darkeco-cluster)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 228) + (new 'static 'sparticle-launch-group + :length 69 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-dark-cluster-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 69 + (sp-item 2100 :period 600 :length 5) + (sp-item 2101 :period 600 :length 40) + (sp-item 2102 :period 600 :length 20) + (sp-item 2103 :period 600 :length 20) + (sp-item 2104 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2104) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2101) + (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 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2105) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2105) + (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* 2103) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.04)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2100) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2102) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-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-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defstate die (crate-darkeco-cluster) + :virtual #t + :code + (behavior () + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "dcrate-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 228) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate idle (crate-darkeco-cluster) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack 'touch) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (let ((a2-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-2 mode) 'darkeco) + (set! (-> a1-3 param 1) (the-as uint a2-2)) + ) + (send-event-function arg0 a1-3) + ) + (go-virtual die) + ) + ) + ) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +;; definition for method 11 of type crate-darkeco-cluster +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + crate-darkeco-cluster + ((obj crate-darkeco-cluster) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *crate-darkeco-cluster-sg* '()) + (go (method-of-object obj idle)) + (none) + ) diff --git a/test/decompiler/reference/levels/jungle/bouncer_REF.gc b/test/decompiler/reference/levels/jungle/bouncer_REF.gc index ad9904e255..bea88fa554 100644 --- a/test/decompiler/reference/levels/jungle/bouncer_REF.gc +++ b/test/decompiler/reference/levels/jungle/bouncer_REF.gc @@ -54,8 +54,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (go bouncer-fire) ) diff --git a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc index 7a4a4d90f8..56d4366647 100644 --- a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc +++ b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc @@ -1171,8 +1171,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (ambient-hint-spawn "sksp0a42" @@ -1212,8 +1212,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 5) ) @@ -1247,8 +1247,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 1) ) @@ -2156,8 +2156,8 @@ 716 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (fisher-spawn-ambient) (let ((s5-1 (get-process *default-dead-pool* fisher-fish #x4000))) @@ -2228,8 +2228,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! v0-2 (+ (-> self missed) (-> arg3 param 0))) (set! (-> self missed) (the-as int v0-2)) diff --git a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc new file mode 100644 index 0000000000..25e3abd302 --- /dev/null +++ b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc @@ -0,0 +1,2289 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defskelgroup *med-res-firecanyon-sg* medres-firecanyon + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -200 0 -440 530) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *jungle-camera-sg* jungle-camera + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + :texture-level 2 + ) + +;; definition of type logtrap +(deftype logtrap (process-drawable) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type logtrap +(defmethod inspect logtrap ((obj logtrap)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *logtrap-sg* logtrap + 0 + 4 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 8 0 13) + :longest-edge (meters 6) + :shadow 3 + ) + +;; failed to figure out what this is: +(defstate idle (logtrap) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if (or (= arg2 'touch) (= arg2 'attack)) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + 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 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (when (logtest? (-> self draw status) 8) + (cond + ((> (-> self draw cur-lod) 0) + (ja-post) + ) + (else + (transform-post) + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> self root-override root-prim prim-core)) + #f + self + ) + ) + ) + ) + ) + (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! + ) + ) + ) + ) + (none) + ) + ) + +;; definition for method 11 of type logtrap +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! logtrap ((obj logtrap) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask enemy) (-> 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) nothing) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 transform-index) 6) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *logtrap-sg* '()) + (set! + (-> obj draw shadow-ctrl) + (new 'process 'shadow-control -5734.4 0.0 614400.0 (the-as float 1) 163840.0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (dummy-47 (-> obj root-override)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type towertop +(deftype towertop (process-drawable) + ((root-override trsq :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type towertop +(defmethod inspect towertop ((obj towertop)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *towertop-sg* towertop + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 30) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate towertop-idle (towertop) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 0.4) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + 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) 0.4) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior towertop) ja-post) + ) + +;; definition for method 11 of type towertop +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! towertop ((obj towertop) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *towertop-sg* '()) + (go towertop-idle) + (none) + ) + +;; definition of type lurkerm-tall-sail +(deftype lurkerm-tall-sail (process-drawable) + ((root-override collide-shape-moving :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + +;; definition for method 3 of type lurkerm-tall-sail +(defmethod inspect lurkerm-tall-sail ((obj lurkerm-tall-sail)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tspeed: ~f~%" (-> obj speed)) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *lurkerm-tall-sail-sg* lurkerm-tall-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 5 0 7) + :longest-edge (meters 4) + ) + +;; failed to figure out what this is: +(defstate lurkerm-tall-sail-idle (lurkerm-tall-sail) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-tall-sail) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (* 0.5 (-> self speed))) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-local-y! + (-> self root-override quat) + (-> self root-override quat) + (* 12743.111 (-> *display* seconds-per-frame) (-> self speed)) + ) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) (* 0.5 (-> self speed))) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-tall-sail) rider-post) + ) + +;; definition for method 11 of type lurkerm-tall-sail +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + lurkerm-tall-sail + ((obj lurkerm-tall-sail) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *lurkerm-tall-sail-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-tall-sail-idle) + (none) + ) + +;; definition of type lurkerm-short-sail +(deftype lurkerm-short-sail (process-drawable) + ((root-override collide-shape-moving :offset 112) + (speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + +;; definition for method 3 of type lurkerm-short-sail +(defmethod inspect lurkerm-short-sail ((obj lurkerm-short-sail)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tspeed: ~f~%" (-> obj speed)) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *lurkerm-short-sail-sg* lurkerm-short-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 5 0 9) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate lurkerm-short-sail-idle (lurkerm-short-sail) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-short-sail) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (* 0.5 (-> self speed))) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-local-y! + (-> self root-override quat) + (-> self root-override quat) + (* -12743.111 (-> *display* seconds-per-frame) (-> self speed)) + ) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) (* 0.5 (-> self speed))) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-short-sail) rider-post) + ) + +;; definition for method 11 of type lurkerm-short-sail +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + lurkerm-short-sail + ((obj lurkerm-short-sail) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 3) + (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *lurkerm-short-sail-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-short-sail-idle) + (none) + ) + +;; definition of type lurkerm-piston +(deftype lurkerm-piston (process-drawable) + ((root-override collide-shape-moving :offset 112) + (sync sync-info :inline :offset-assert 176) + (base vector :inline :offset-assert 192) + (height vector :inline :offset-assert 208) + (speed float :offset-assert 224) + (alt-actor entity-actor :offset-assert 228) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xe8 + :flag-assert #x14008000e8 + ) + +;; definition for method 3 of type lurkerm-piston +(defmethod inspect lurkerm-piston ((obj lurkerm-piston)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Tbase: ~`vector`P~%" (-> obj base)) + (format #t "~T~Theight: ~`vector`P~%" (-> obj height)) + (format #t "~T~Tspeed: ~f~%" (-> obj speed)) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *lurkerm-piston-sg* lurkerm-piston + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 6) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate lurkerm-piston-idle (lurkerm-piston) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior lurkerm-piston) rider-trans) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) (-> self speed)) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self base quad)) + (+! + (-> gp-0 y) + (* + (get-current-value-with-mirror (-> self sync) (-> self height y)) + (-> self speed) + ) + ) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) (-> self speed)) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior lurkerm-piston) rider-post) + ) + +;; definition for method 11 of type lurkerm-piston +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defmethod copy-defaults! lurkerm-piston ((obj lurkerm-piston) (arg0 res-lump)) + (local-vars (sv-16 res-tag) (sv-32 res-tag)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *lurkerm-piston-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (let ((f30-0 (-> obj base y))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-32 (res-lump-data arg0 'height-info pointer :tag-ptr (& sv-16)))) + (set! + (-> obj base y) + (+ f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) + (-> (the-as (pointer float) v1-32)) + 0.0 + ) + ) + ) + ) + ) + (let ((s4-1 (-> obj height))) + (set! (-> s4-1 x) 0.0) + (set! sv-32 (new 'static 'res-tag)) + (let + ((v1-35 + (res-lump-data arg0 'height-info (pointer float) :tag-ptr (& sv-32)) + ) + ) + (set! (-> s4-1 y) (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) + (-> v1-35 1) + 20480.0 + ) + ) + ) + (set! (-> s4-1 z) 0.0) + (set! (-> s4-1 w) 1.0) + ) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go lurkerm-piston-idle) + (none) + ) + +;; definition of type accordian +(deftype accordian (process-drawable) + ((speed float :offset-assert 176) + (alt-actor entity-actor :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + +;; definition for method 3 of type accordian +(defmethod inspect accordian ((obj accordian)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tspeed: ~f~%" (-> obj speed)) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *accordian-sg* accordian + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem -7 0 23 25) + :longest-edge (meters 4) + ) + +;; failed to figure out what this is: +(defstate accordian-idle (accordian) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'stop) + (process-entity-status! + self + (entity-perm-status complete) + #t + ) + (let ((f0-0 0.0)) + (set! (-> self speed) f0-0) + f0-0 + ) + ) + ) + ) + ) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-post) + (while #t + (suspend) + (when (logtest? (-> self draw status) 8) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) (-> self speed)) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-post) + ) + ) + (none) + ) + ) + +;; definition for method 11 of type accordian +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! accordian ((obj accordian) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *accordian-sg* '()) + (set! (-> obj root pause-adjust-distance) 204800.0) + (set! (-> obj alt-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (set! (-> obj speed) 1.0) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj speed) 0.0) + ) + (go accordian-idle) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *junglecam-sg* junglecam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 80) + :longest-edge (meters 0) + ) + +;; definition of type junglecam +(deftype junglecam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + +;; definition for method 3 of type junglecam +(defmethod inspect junglecam ((obj junglecam)) + (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 + ) + +;; definition of type precurbridgecam +(deftype precurbridgecam (pov-camera) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + +;; definition for method 3 of type precurbridgecam +(defmethod inspect precurbridgecam ((obj precurbridgecam)) + (let ((t9-0 (method-of-type pov-camera inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate pov-camera-playing (precurbridgecam) + :virtual #t + :code + (behavior () + (ambient-hint-spawn "gamcam30" (the-as vector #f) *entity-pool* 'camera) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + ) + (let ((gp-0 (-> self skel root-channel 0))) + (set! + (-> gp-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + (set! (-> gp-0 param 0) (ja-aframe 0.0 0)) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 8)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 0.0 0)) + (set! (-> gp-1 param 1) 1.0) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (send-event (ppointer->process (-> self parent)) 'go) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 1.0) + (joint-control-channel-group! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (while (not (ja-done? 0)) + (suspend) + (ja-eval) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +;; definition of type precurbridge-span +(deftype precurbridge-span (structure) + () + :method-count-assert 9 + :size-assert #x0 + :flag-assert #x900000000 + ) + +;; definition for method 3 of type precurbridge-span +(defmethod inspect precurbridge-span ((obj precurbridge-span)) + (format #t "[~8x] ~A~%" obj 'precurbridge-span) + obj + ) + +;; definition of type precurbridge +(deftype precurbridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (smush smush-control :inline :offset-assert 176) + (base vector :inline :offset-assert 208) + (activation-point vector :inline :offset-assert 224) + (span-array precurbridge-span 8 :offset-assert 240) + ) + :heap-base #xa0 + :method-count-assert 20 + :size-assert #x110 + :flag-assert #x1400a00110 + ) + +;; definition for method 3 of type precurbridge +(defmethod inspect precurbridge ((obj precurbridge)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsmush: #~%" (-> obj smush)) + (format #t "~T~Tbase: ~`vector`P~%" (-> obj base)) + (format + #t + "~T~Tactivation-point: #~%" + (-> obj activation-point) + ) + (format #t "~T~Tspan-array[8] @ #x~X~%" (-> obj span-array)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *precurbridge-sg* precurbridge + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 40) + :longest-edge (meters 3.5999999046325684) + ) + +;; failed to figure out what this is: +(defstate precurbridge-idle (precurbridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('go) + (go precurbridge-activate) + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (while #t + (when + (and + *target* + (< + (vector-vector-xz-distance + (-> self activation-point) + (-> *target* control trans) + ) + 49152.0 + ) + (< (-> self activation-point y) (-> *target* control trans y)) + (< (-> *target* control trans y) (+ 20480.0 (-> self activation-point y))) + (not (-> self child)) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'powerup)) + (set! (-> a1-2 param 1) (the-as uint 3)) + (cond + ((send-event-function *target* a1-2) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self mask) (process-mask platform)) + (let ((gp-1 (entity-by-name "junglecam-1"))) + (cond + (gp-1 + (let + ((s5-0 (get-process *default-dead-pool* precurbridgecam #x4000))) + (when s5-0 + (let ((t9-6 (method-of-type precurbridgecam activate))) + (t9-6 + (the-as precurbridgecam s5-0) + self + 'precurbridgecam + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> gp-1 extra trans) + *junglecam-sg* + "precurbridgecam" + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) + ) + ) + (else + (format + #t + "ERROR: position for precursor bridge camera not found~%" + ) + (go precurbridge-activate) + ) + ) + ) + ) + (else + (level-hint-spawn + (game-text-id jungle-precursorbridge-hint) + "sksp0039" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior precurbridge) ja-post) + ) + +;; failed to figure out what this is: +(defstate precurbridge-activate (precurbridge) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (the-as (function none :behavior precurbridge) rider-trans) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play-by-name + (static-sound-name "blue-eco-on") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-3 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-3 param 1) 0.25) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! + a0-3 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (if (rand-vu-percent? 0.1) + (spawn-projectile-blue *target*) + ) + (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) 0.25) + (joint-control-channel-group-eval! + a0-6 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go precurbridge-active #f) + (none) + ) + :post + (the-as (function none :behavior precurbridge) rider-post) + ) + +;; failed to figure out what this is: +(defstate precurbridge-active (precurbridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'bonk) + (let* ((gp-0 (the-as object (-> arg3 param 0))) + (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) + (s5-0 (-> self root-override)) + ) + (touched-prim + a0-2 + s5-0 + (the-as touching-shapes-entry gp-0) + ) + ((method-of-type touching-shapes-entry touched-shape) + (the-as touching-shapes-entry gp-0) + s5-0 + ) + ) + (activate! (-> self smush) -1.0 150 600 1.0 1.0) + ) + ) + ) + ) + :trans + (the-as (function none :behavior precurbridge) rider-trans) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw bounds w) 81920.0) + (when arg0 + (ja-channel-set! 1) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + ) + (ja-post) + (dummy-47 (-> self root-override)) + (logior! (-> self mask) (process-mask actor-pause)) + (while #t + (if (not (movie?)) + (set! (-> self mask) (logior (process-mask platform) (-> self mask))) + ) + (cond + ((and + *target* + (>= + 61440.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + ) + (ja-channel-push! 1 60) + (let ((gp-1 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-identity + ) + (set! (-> gp-1 frame-num) 0.0) + ) + ) + ) + (else + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 4) + ) + ) + (ja-channel-push! 1 60) + (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 4)) + num-func-identity + ) + (set! (-> gp-2 frame-num) 0.0) + ) + ) + ) + ) + (update! (-> self sound)) + (let ((a0-19 (-> self skel root-channel 0))) + (set! (-> a0-19 param 0) 0.4) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior precurbridge) rider-post) + ) + +;; definition for method 11 of type precurbridge +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defmethod copy-defaults! precurbridge ((obj precurbridge) (arg0 res-lump)) + (stack-size-set! (-> obj main-thread) 512) + (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) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 5) + (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 7) + (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 9) + (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-3 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 11) + (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-4 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 13) + (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-5 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 15) + (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-6 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 3) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 17) + (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-7 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 19) + (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) + ) + (dummy-28 s3-0) + (let + ((s2-8 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 4) + (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-9 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 6) + (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-10 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 8) + (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-11 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 10) + (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-12 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 12) + (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-13 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 14) + (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-14 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 16) + (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + (let + ((s2-15 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 18) + (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (set-vector! (-> obj activation-point) 1765785.6 61440.0 -1279180.8 1.0) + (initialize-skeleton obj *precurbridge-sg* '()) + (logior! (-> obj skel status) 1) + (ja-post) + (dummy-47 (-> obj root-override)) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (set! + (-> obj sound) + (new 'process 'ambient-sound arg0 (-> obj root-override trans)) + ) + (cond + ((and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go precurbridge-active #t) + ) + (else + (go precurbridge-idle) + ) + ) + (none) + ) + +;; definition of type maindoor +(deftype maindoor (process-drawable) + ((root-override collide-shape :offset 112) + (thresh vector :inline :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xc0 + :flag-assert #x14005000c0 + ) + +;; definition for method 3 of type maindoor +(defmethod inspect maindoor ((obj maindoor)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tthresh: ~`vector`P~%" (-> obj thresh)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *maindoor-sg* maindoor + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate maindoor-closed (maindoor) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 1) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (when arg0 + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! (-> v1-6 frame-num) 0.0) + ) + ) + (suspend) + (dummy-47 (-> self root-override)) + (while #t + (when + (or + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (and + (and + *target* + (>= + (-> self thresh w) + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + ) + (sound-play-by-name + (static-sound-name "blue-eco-on") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + (go maindoor-open #f) + ) + (if + (and + *target* + (>= + (-> self thresh w) + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (level-hint-spawn + (game-text-id jungle-maindoor-hint) + "sksp0038" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (when (ja-min? 0) + (set! (-> self root-override root-prim prim-core action) (the-as uint 1)) + (set! (-> self root-override root-prim prim-core offense) 4) + ) + (let ((a0-19 (-> self skel root-channel 0))) + (set! (-> a0-19 param 0) 0.0) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-post) + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate maindoor-open (maindoor) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 0) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (process-entity-status! self (entity-perm-status complete) #t) + (when arg0 + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! + (-> v1-6 frame-num) + (the float (+ (-> v1-6 frame-group data 0 length) -1)) + ) + ) + ) + (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) + (set! (-> self root-override root-prim prim-core offense) 0) + (while (not (ja-max? 0)) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 2.0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (if (and (not arg0) (rand-vu-percent? 0.2)) + (spawn-projectile-blue *target*) + ) + (suspend) + ) + (logior! (-> self draw status) 2) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior maindoor) ja-post) + ) + +;; definition for method 11 of type maindoor +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! maindoor ((obj maindoor) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *maindoor-sg* '()) + (dummy-47 (-> obj root-override)) + (set! (-> obj thresh w) 61440.0) + (if + (or + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (and + (and + *target* + (>= + (-> obj thresh w) + (vector-vector-distance + (-> obj root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + ) + (go maindoor-open #t) + (go maindoor-closed #t) + ) + (none) + ) + +;; definition of type sidedoor +(deftype sidedoor (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + +;; definition for method 3 of type sidedoor +(defmethod inspect sidedoor ((obj sidedoor)) + (let ((t9-0 (method-of-type eco-door inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *sidedoor-sg* sidedoor + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; definition for method 24 of type sidedoor +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-24 sidedoor ((obj sidedoor)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 2) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 25 of type sidedoor +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-25 sidedoor ((obj sidedoor)) + (initialize-skeleton obj *sidedoor-sg* '()) + (set! (-> obj open-distance) 22528.0) + (set! (-> obj close-distance) 61440.0) + (set! (-> obj speed) 6.0) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) + +;; definition of type jngpusher +(deftype jngpusher (process-drawable) + ((root-override trsqv :offset 112) + (sync sync-info :inline :offset-assert 176) + (back-prim collide-shape-prim :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + +;; definition for method 3 of type jngpusher +(defmethod inspect jngpusher ((obj jngpusher)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Tback-prim: ~A~%" (-> obj back-prim)) + obj + ) + +;; definition for method 7 of type jngpusher +;; INFO: Return type mismatch process-drawable vs jngpusher. +(defmethod relocate jngpusher ((obj jngpusher) (arg0 int)) + (if (nonzero? (-> obj back-prim)) + (&+! (-> obj back-prim) arg0) + ) + (the-as + jngpusher + ((the-as + (function process-drawable int process-drawable) + (find-parent-method jngpusher 7) + ) + obj + arg0 + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *jngpusher-sg* jngpusher + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate jngpusher-idle (jngpusher) + :trans + (the-as (function none :behavior jngpusher) rider-trans) + :code + (behavior () + (while #t + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 num-func) num-func-identity) + (set! + (-> gp-0 frame-num) + (get-current-value-with-mirror + (-> self sync) + (the float (ja-num-frames 0)) + ) + ) + ) + (cond + ((< (ja-frame-num 0) (the float (/ (ja-num-frames 0) 3))) + (set! (-> self back-prim prim-core collide-as) (the-as uint 0)) + (set! (-> self back-prim collide-with) (the-as uint 0)) + 0 + ) + (else + (set! (-> self back-prim prim-core collide-as) (the-as uint 2048)) + (set! (-> self back-prim collide-with) (the-as uint 16)) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior jngpusher) rider-post) + ) + +;; definition for method 11 of type jngpusher +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! jngpusher ((obj jngpusher) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask enemy 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) nothing) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) + (dummy-28 s3-0) + (set! (-> obj back-prim) s2-1) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *jngpusher-sg* '()) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (go jngpusher-idle) + (none) + ) + +;; definition of type jungle-water +(deftype jungle-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + +;; definition for method 3 of type jungle-water +(defmethod inspect jungle-water ((obj jungle-water)) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for symbol ripple-for-jungle-water, type ripple-wave-set +(define + ripple-for-jungle-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.5 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 30.0 :xdiv -2 :speed 4.0) + (new 'static 'ripple-wave :scale 30.0 :xdiv 1 :zdiv -1 :speed 4.0) + (new 'static 'ripple-wave :scale 10.0 :xdiv -5 :zdiv -3 :speed 2.0) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 22 of type jungle-water +(defmethod TODO-RENAME-22 jungle-water ((obj jungle-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-jungle-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) diff --git a/test/decompiler/reference/levels/jungleb/aphid_REF.gc b/test/decompiler/reference/levels/jungleb/aphid_REF.gc index 863f0fbb03..89b2581da9 100644 --- a/test/decompiler/reference/levels/jungleb/aphid_REF.gc +++ b/test/decompiler/reference/levels/jungleb/aphid_REF.gc @@ -92,8 +92,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-3 (-> self skel root-channel 0))) (set! @@ -174,8 +174,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((a0-17 (-> self skel root-channel 0))) (set! diff --git a/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc new file mode 100644 index 0000000000..49853dcfce --- /dev/null +++ b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc @@ -0,0 +1,760 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type eggtop +(deftype eggtop (process-drawable) + ((root-override collide-shape-moving :offset 112) + (cam-tracker uint64 :offset-assert 176) + (sound-id sound-id :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + +;; definition for method 3 of type eggtop +(defmethod inspect eggtop ((obj eggtop)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tcam-tracker: ~D~%" (-> obj cam-tracker)) + (format #t "~T~Tsound-id: ~D~%" (-> obj sound-id)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *eggtop-sg* eggtop + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -4.5 0 4.5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 189) + (new 'static 'sparticle-launch-group + :length 5 + :duration #xbb8 + :linger-duration #x5dc + :name "group-jungle-blue-eco-room-open" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 899 :fade-after (meters 110.0)) + (sp-item 900 :fade-after (meters 110.0)) + (sp-item 901 :fade-after (meters 110.0)) + (sp-item 902 :fade-after (meters 110.0)) + (sp-item 903 :fade-after (meters 110.0)) + ) + :bounds + (new 'static 'sphere :y -24576.0 :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 190) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :name "group-jungle-blue-eco-room-activate" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 903) + (sp-item 903) + (sp-item 904 :flags (bit1) :period 1200 :length 15) + ) + :bounds + (new 'static 'sphere :y -24576.0 :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 904) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 30.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 20.0) (meters 10.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 5.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-r 0.0 16.0 1.0) + (sp-rnd-flt spt-g 16.0 32.0 1.0) + (sp-flt spt-b 127.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.05) (degrees 0.1) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 left-multiply-quat) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 905) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 905) + (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 225) + (sp-launcher-by-id spt-next-launcher 906) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 906) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.14222223) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 899) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 10.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 8.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-r 0.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 900) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 901) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 907) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-fade-r -1.0) + (sp-flt spt-fade-g -1.0) + (sp-flt spt-fade-a -2.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 902) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-flt spt-y (meters -4.0)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 150.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 903) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees -140.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.7) (meters 0.4) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 907) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 80.0) (degrees 200.00002) 1.0) + (sp-flt spt-conerot-radius (meters 4.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defstate eggtop-idle (eggtop) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'notify) + (case (-> arg3 param 0) + (('pickup) + (if (type-type? (-> arg0 type) fuel-cell) + (save-reminder + (get-task-control (-> self entity extra perm task)) + 1 + 0 + ) + ) + ) + ) + ) + ) + ) + ) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) + :trans + (behavior () + (if + (and + (not (-> self child)) + (task-complete? *game-info* (-> self entity extra perm task)) + ) + (go eggtop-close #f) + ) + (spawn (-> self part) (-> self root-override trans)) + (sound-play-by-name + (static-sound-name "electric-loop") + (-> self sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (none) + ) + :code + (behavior () + (suspend) + (dummy-47 (-> self root-override)) + (anim-loop) + (none) + ) + :post + (the-as (function none :behavior eggtop) ja-post) + ) + +;; failed to figure out what this is: +(defstate eggtop-close (eggtop) + :trans + (behavior () + (rider-trans) + (hide-hud-quick) + (none) + ) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (sound-play-by-name + (static-sound-name "vent-switch") + (new-sound-id) + 2048 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 190) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (let ((gp-2 (get-process *default-dead-pool* camera-tracker #x4000))) + (set! (-> self cam-tracker) (the-as uint (ppointer->handle (when gp-2 + (let + ((t9-6 + (method-of-type + camera-tracker + activate + ) + ) + ) + (t9-6 + (the-as + camera-tracker + gp-2 + ) + self + 'camera-tracker + (the-as + pointer + #x70004000 + ) + ) + ) + (run-now-in-process + gp-2 + camera-tracker-init + (lambda :behavior camera-tracker + () + (while + (not + (process-grab? + *target* + ) + ) + (suspend) + ) + (let + ((gp-0 + (-> + *display* + base-frame-counter + ) + ) + ) + (until + (>= + (- + (-> + *display* + base-frame-counter + ) + gp-0 + ) + 300 + ) + (suspend) + ) + ) + (send-event + *camera* + 'blend-from-as-fixed + ) + (camera-look-at + (the-as + process + "ecovent-171" + ) + 0 + ) + (camera-change-to + "camera-223" + 0 + #f + ) + (let + ((gp-1 + (-> + *display* + base-frame-counter + ) + ) + ) + (until + (>= + (- + (-> + *display* + base-frame-counter + ) + gp-1 + ) + 900 + ) + (suspend) + ) + ) + (while + (not + (process-release? + (handle->process + (-> + self + grab-target + ) + ) + ) + ) + (suspend) + ) + (send-event + *camera* + 'blend-from-as-fixed + ) + (level-hint-spawn + (game-text-id + jungleb-eco-vents-opened + ) + "asstvb02" + (the-as + entity + #f + ) + *entity-pool* + (game-task + none + ) + ) + (camera-look-at + *target* + 0 + ) + (camera-change-to + (the-as + string + 'base + ) + 150 + #f + ) + (send-event + (ppointer->process + (-> + *hud-parts* + fuel-cell + ) + ) + 'show + ) + (none) + ) + ) + (-> + gp-2 + ppointer + ) + ) + ) + ) + ) + ) + (save-reminder (get-task-control (-> self entity extra perm task)) 2 0) + (sound-play-by-name + (static-sound-name "jngb-eggtop-seq") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((a0-16 (-> self skel root-channel 0))) + (set! + (-> a0-16 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-16 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-16 param 1) 1.0) + (set! (-> a0-16 frame-num) 0.0) + (joint-control-channel-group! + a0-16 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 param 0) + (the float (+ (-> a0-17 frame-group data 0 length) -1)) + ) + (set! (-> a0-17 param 1) 1.0) + (joint-control-channel-group-eval! + a0-17 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-20 (-> self entity))) + (if (and a0-20 (= self (-> a0-20 extra process))) + (entity-task-complete-on a0-20) + ) + ) + (let ((gp-4 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-4 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! + (-> gp-4 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + (suspend) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + :post + (the-as (function none :behavior eggtop) rider-post) + ) + +;; definition for method 11 of type eggtop +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! eggtop ((obj eggtop) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *eggtop-sg* '()) + (logior! (-> obj skel status) 1) + (dummy-47 (-> obj root-override)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 189) obj) + ) + (set! (-> obj sound-id) (new-sound-id)) + (cond + ((task-complete? *game-info* (-> obj entity extra perm task)) + (go eggtop-close #t) + ) + (else + (birth-pickup-at-point + (vector+! + (new 'stack-no-clear 'vector) + (-> obj root-override trans) + (new 'static 'vector :y 6144.0 :w 1.0) + ) + 6 + (the float (-> obj entity extra perm task)) + #f + obj + (the-as fact-info #f) + ) + (go eggtop-idle) + ) + ) + (none) + ) + +;; definition of type jng-iris-door +(deftype jng-iris-door (eco-door) + () + :heap-base #xa0 + :method-count-assert 27 + :size-assert #x104 + :flag-assert #x1b00a00104 + ) + +;; definition for method 3 of type jng-iris-door +(defmethod inspect jng-iris-door ((obj jng-iris-door)) + (let ((t9-0 (method-of-type eco-door inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *jng-iris-door-sg* jng-iris-door + 0 + 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; definition for method 24 of type jng-iris-door +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-24 jng-iris-door ((obj jng-iris-door)) + (let + ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 25 of type jng-iris-door +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-25 jng-iris-door ((obj jng-iris-door)) + (initialize-skeleton obj *jng-iris-door-sg* '()) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (dummy-47 (-> obj root-override)) + 0 + (none) + ) diff --git a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc index 126dca1046..1bca585e7f 100644 --- a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc +++ b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc @@ -95,8 +95,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((s5-1 (-> self skel root-channel 0))) @@ -165,8 +165,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (let ((f30-2 (- f30-1 (-> self before-turn-up-time))) diff --git a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc index c2c4b8004d..9e848d6577 100644 --- a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc @@ -1224,7 +1224,7 @@ baby-spider-default-event-handler (set! (-> self enemy-info pickup-amount) (the float (-> arg3 pickup-amount))) (create-connection! *cavecrystal-light-control* - (the-as cavecrystal self) + self (-> self entity) (the-as (function object object object object object) @@ -1273,7 +1273,7 @@ baby-spider-default-event-handler ) (create-connection! *cavecrystal-light-control* - (the-as cavecrystal obj) + obj (-> obj entity) (the-as (function object object object object object) diff --git a/test/decompiler/reference/levels/maincave/cavecrystal-light_REF.gc b/test/decompiler/reference/levels/maincave/cavecrystal-light_REF.gc index a2ef359f61..5071cd911e 100644 --- a/test/decompiler/reference/levels/maincave/cavecrystal-light_REF.gc +++ b/test/decompiler/reference/levels/maincave/cavecrystal-light_REF.gc @@ -43,11 +43,11 @@ :size-assert #x170 :flag-assert #xf00000170 (:methods - (TODO-RENAME-9 (_type_ int float cavecrystal) object 9) + (TODO-RENAME-9 (_type_ int float process-drawable) object 9) (TODO-RENAME-10 (_type_ vector) float 10) (inc-intensites! (_type_) int 11) (TODO-RENAME-12 (_type_) symbol 12) - (create-connection! (_type_ cavecrystal res-lump (function object object object object object) object object) connection 13) + (create-connection! (_type_ process-drawable res-lump (function object object object object object) object object) connection 13) (execute-connections (_type_) int 14) ) ) @@ -97,7 +97,7 @@ create-connection! cavecrystal-light-control ((obj cavecrystal-light-control) - (arg0 cavecrystal) + (arg0 process-drawable) (arg1 res-lump) (arg2 (function object object object object object)) (arg3 object) @@ -215,7 +215,11 @@ (defmethod TODO-RENAME-9 cavecrystal-light-control - ((obj cavecrystal-light-control) (arg0 int) (arg1 float) (arg2 cavecrystal)) + ((obj cavecrystal-light-control) + (arg0 int) + (arg1 float) + (arg2 process-drawable) + ) (TODO-RENAME-12 obj) (when (or (< arg0 0) (>= arg0 7)) (format 0 "ERROR: Bogus cavecrystal id!~%") @@ -227,7 +231,7 @@ (+! (-> obj active-count) 1) (set! (-> s3-0 intensity) arg1) (set! (-> s3-0 crystal-handle) (process->handle arg2)) - (set! (-> s3-0 trans quad) (-> arg2 root-override trans quad)) + (set! (-> s3-0 trans quad) (-> arg2 root trans quad)) (inc-intensites! obj) ) ((and (>= 0.0 arg1) (< 0.0 (-> s3-0 intensity))) diff --git a/test/decompiler/reference/levels/maincave/maincave-part_REF.gc b/test/decompiler/reference/levels/maincave/maincave-part_REF.gc index c1ed4bae80..69a666a0e3 100644 --- a/test/decompiler/reference/levels/maincave/maincave-part_REF.gc +++ b/test/decompiler/reference/levels/maincave/maincave-part_REF.gc @@ -439,8 +439,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -465,7 +465,3 @@ ) (none) ) - - - - diff --git a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc index 51ca70ca4c..25e3c8bd9f 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc @@ -476,8 +476,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (sound-play-by-name @@ -486,8 +486,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -554,8 +554,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (suspend) (go-virtual projectile-die) diff --git a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc index f714e16cc6..532c46d99e 100644 --- a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc +++ b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc @@ -161,8 +161,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (-> self skel root-channel 0))) (set! diff --git a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc index fb8d66e15e..9a2823e133 100644 --- a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc @@ -201,8 +201,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 @@ -257,8 +257,8 @@ 1024 0 0 - (the-as uint 1) - (-> self root-override trans) + 1 + (the-as symbol (-> self root-override trans)) ) ) ) @@ -525,8 +525,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-1 diff --git a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc index 05a02e41b4..f653047e0c 100644 --- a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc @@ -138,8 +138,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (send-to-all-after (-> self link) 'trigger-rise) (go silostep-rise #f) diff --git a/test/decompiler/reference/levels/misty/muse_REF.gc b/test/decompiler/reference/levels/misty/muse_REF.gc index b754aba6cb..9488a295a6 100644 --- a/test/decompiler/reference/levels/misty/muse_REF.gc +++ b/test/decompiler/reference/levels/misty/muse_REF.gc @@ -704,8 +704,8 @@ nav-enemy-default-event-handler 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (close-specific-task! (game-task misty-muse) (task-status need-reminder)) (process-entity-status! self (entity-perm-status dead) #t) diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index fb0aa5de00..45da2ad9e6 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -666,7 +666,7 @@ 5 ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) :bounds (static-spherem 0 2 0 6) - :longest-edge (meters 2.3) + :longest-edge (meters 2.299999952316284) :shadow 4 ) diff --git a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc new file mode 100644 index 0000000000..96015322c9 --- /dev/null +++ b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc @@ -0,0 +1,2608 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defskelgroup *med-res-snow-sg* medres-snow + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -390 150 70 410) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 473) + (new 'static 'sparticle-launch-group + :length 5 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-tntbarrel-BIG-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 2234 :period 3000 :length 5) + (sp-item 2235 :period 3000 :length 5) + (sp-item 2236 :period 3000 :length 40) + (sp-item 2237 :period 3000 :length 40) + (sp-item 2238 :period 3000 :length 40) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2236) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.4) (meters 1.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.32) (meters 0.42666668) 1.0) + (sp-flt spt-scalevel-x (meters -0.009333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-b -1.4222223) + (sp-rnd-flt spt-accel-y -2.048 -2.048 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2239) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 12.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2239) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.0666667) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2238) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-scale-x (meters 0.5)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 32.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 3.4133334)) + (sp-flt spt-fade-g -3.2666667) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2234) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 128.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2235) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 32.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2237) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 48.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 16.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.32) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.053333335)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.08533333) + (sp-rnd-flt spt-accel-y 2.048 2.048 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2240) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 160.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 8.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2240) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-fade-r -0.26666668) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-b -0.52916664) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 2241) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2241) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-fade-r -0.24380952) + (sp-flt spt-fade-g -0.12190476) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.09142857) + (sp-int spt-next-time 525) + (sp-launcher-by-id spt-next-launcher 2242) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2242) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 474) + (new 'static 'sparticle-launch-group + :length 4 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-tntbarrel-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 2079 :period 600 :length 5) + (sp-item 2080 :period 600 :length 40) + (sp-item 2081 :period 600 :length 20) + (sp-item 2082 :period 600 :length 20) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2080) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-b -1.4222223) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2083) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2083) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.0666667) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2082) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 0.85333335)) + (sp-flt spt-fade-g -3.2666667) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2079) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2081) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2084) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2084) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b -2.1166666) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 2085) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2085) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-fade-r -0.5688889) + (sp-flt spt-fade-g -0.28444445) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.21333334) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2086) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2086) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *tntbarrel-sg* tntbarrel + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 0 4) + :longest-edge (meters 0) + ) + +;; definition of type tntbarrel +(deftype tntbarrel (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (idle () _type_ :state 20) + (die (symbol) _type_ :state 21) + ) + ) + +;; definition for method 3 of type tntbarrel +(defmethod inspect tntbarrel ((obj tntbarrel)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate die (tntbarrel) + :virtual #t + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 0) + (dummy-48 (-> self root-override)) + (ja-post) + (sound-play-by-name + (static-sound-name "dcrate-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (cond + (arg0 + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 473) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + ) + (else + (let ((gp-2 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-2 + (let ((t9-9 (method-of-type part-tracker activate))) + (t9-9 + (the-as part-tracker gp-2) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-2 + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-2 ppointer) + ) + ) + ) + ) + (suspend) + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate idle (tntbarrel) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('die-big) + (go-virtual die #t) + ) + (('die) + (go-virtual die #f) + ) + (('attack 'touch) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 2) + (set! (-> a1-7 message) 'attack-invinc) + (set! (-> a1-7 param 0) (-> arg3 param 0)) + (let ((a2-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-2 mode) 'death) + (set! (-> a1-7 param 1) (the-as uint a2-2)) + ) + (send-event-function arg0 a1-7) + ) + (go-virtual die #f) + ) + ) + ) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +;; definition for method 11 of type tntbarrel +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! tntbarrel ((obj tntbarrel) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *tntbarrel-sg* '()) + (set-vector! (-> obj draw color-mult) 1.3 1.3 1.3 1.0) + (go (method-of-object obj idle)) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-step-a-sg* ogre-step + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-step-b-sg* ogre-step + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 3 0 5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-step-c-sg* ogre-step + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 3 0 6.5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-isle-a-sg* ogre-isle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-isle-b-sg* ogre-isle + 3 + 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-isle-c-sg* ogre-isle + 6 + 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-isle-d-sg* ogre-isle + 9 + 11 + ((10 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; definition of type ogre-plat +(deftype ogre-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (idle-y-offset float :offset-assert 752) + (float-y-offset float :offset-assert 756) + (delay uint64 :offset-assert 760) + (active symbol :offset-assert 768) + (triggered entity-actor :offset-assert 772) + ) + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-plat +(defmethod inspect ogre-plat ((obj ogre-plat)) + (let ((t9-0 (method-of-type rigid-body-platform inspect))) + (t9-0 obj) + ) + (format #t "~T~Tanchor-point: #~%" (-> obj anchor-point)) + (format #t "~T~Tidle-y-offset: ~f~%" (-> obj idle-y-offset)) + (format #t "~T~Tfloat-y-offset: ~f~%" (-> obj float-y-offset)) + (format #t "~T~Tdelay: ~D~%" (-> obj delay)) + (format #t "~T~Tactive: ~A~%" (-> obj active)) + (format #t "~T~Ttriggered: ~A~%" (-> obj triggered)) + obj + ) + +;; definition for method 23 of type ogre-plat +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-23 ogre-plat ((obj ogre-plat) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method ogre-plat 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 (ogre-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'trigger) + (set! (-> self triggered) (the-as entity-actor #t)) + (set! (-> self delay) (-> arg3 param 0)) + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + ) + :trans + (behavior () + (cond + ((-> self active) + (when + (and + *target* + (>= + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (if (-> self triggered) + (sound-play-by-name + (static-sound-name "rock-in-lava") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (go-virtual rigid-body-platform-float) + ) + ) + (else + (if + (and + (-> self triggered) + (>= + (- (-> *display* base-frame-counter) (-> self state-time)) + (the-as int (-> self delay)) + ) + ) + (set! (-> self active) #t) + ) + ) + ) + (none) + ) + :code + (behavior () + (logior! (-> self draw status) 2) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-plat) ja-post) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-float (ogre-plat) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior ogre-plat) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (cond + ((or + (not *target*) + (< + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (let ((f30-1 (-> self idle-y-offset))) + (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) + (-> self float-y-offset) + (* 32768.0 (-> *display* seconds-per-frame)) + ) + ) + ) + ) + (none) + ) + :code + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-plat) rigid-body-platform-post) + ) + +;; definition for method 30 of type ogre-plat +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-30 ogre-plat ((obj ogre-plat)) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +;; definition for method 31 of type ogre-plat +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod TODO-RENAME-31 ogre-plat ((obj ogre-plat)) + (set! (-> obj float-height-offset) (-> obj idle-y-offset)) + (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)))) + (f28-0 (-> obj root-overlay root-prim local-sphere w)) + ) + (set! (-> s3-0 local-pos x) (* f28-0 (sin f30-0))) + (set! (-> s3-0 local-pos y) 0.0) + (set! (-> s3-0 local-pos z) (* f28-0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (set! (-> obj active) #f) + (set! (-> obj triggered) #f) + 0 + (none) + ) + +;; definition for symbol *ogre-step-constants*, type rigid-body-platform-constants +(define + *ogre-step-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 4.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 5.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 100.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4.0) + :inertial-tensor-y (meters 10.0) + :inertial-tensor-z (meters 4.0) + :idle-distance (meters 150.0) + :platform #t + :sound-name "lava-plat" + ) + ) + +;; definition of type ogre-step +(deftype ogre-step (ogre-plat) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-step +(defmethod inspect ogre-step ((obj ogre-step)) + (let ((t9-0 (method-of-type ogre-plat inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 31 of type ogre-step +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-step ((obj ogre-step)) + (set! (-> obj idle-y-offset) -28672.0) + (set! (-> obj float-y-offset) 0.0) + (+! (-> obj root-overlay trans y) (-> obj idle-y-offset)) + (TODO-RENAME-29 obj *ogre-step-constants*) + ((the-as (function ogre-plat none) (find-parent-method ogre-step 31)) obj) + (let ((a0-5 (entity-actor-lookup (-> obj entity) 'alt-actor 0))) + (if + (and + a0-5 + (logtest? (-> a0-5 extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj active) #t) + ) + ) + 0 + (none) + ) + +;; definition for method 34 of type ogre-step +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-34 ogre-step ((obj ogre-step)) + (if (-> obj active) + (go (method-of-object obj rigid-body-platform-float)) + (go (method-of-object obj rigid-body-platform-idle)) + ) + 0 + (none) + ) + +;; definition of type ogre-step-a +(deftype ogre-step-a (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-step-a +(defmethod inspect ogre-step-a ((obj ogre-step-a)) + (let ((t9-0 (method-of-type ogre-step inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type ogre-step-b +(deftype ogre-step-b (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-step-b +(defmethod inspect ogre-step-b ((obj ogre-step-b)) + (let ((t9-0 (method-of-type ogre-step inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type ogre-step-c +(deftype ogre-step-c (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-step-c +(defmethod inspect ogre-step-c ((obj ogre-step-c)) + (let ((t9-0 (method-of-type ogre-step inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type ogre-step-d +(deftype ogre-step-d (ogre-step) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-step-d +(defmethod inspect ogre-step-d ((obj ogre-step-d)) + (let ((t9-0 (method-of-type ogre-step inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 31 of type ogre-step-a +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-step-a ((obj ogre-step-a)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-a-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-a 31)) obj) + 0 + (none) + ) + +;; definition for method 31 of type ogre-step-b +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-step-b ((obj ogre-step-b)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-b-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-b 31)) obj) + 0 + (none) + ) + +;; definition for method 31 of type ogre-step-c +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-step-c ((obj ogre-step-c)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 26624.0 + ) + (initialize-skeleton obj *ogre-step-c-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-c 31)) obj) + 0 + (none) + ) + +;; definition for method 31 of type ogre-step-d +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-step-d ((obj ogre-step-d)) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 12288.0 + 0.0 + 20480.0 + ) + (initialize-skeleton obj *ogre-step-b-sg* '()) + ((the-as (function ogre-step none) (find-parent-method ogre-step-d 31)) obj) + 0 + (none) + ) + +;; definition for symbol *ogre-isle-constants*, type rigid-body-platform-constants +(define + *ogre-isle-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 2.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 4000.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 10.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 10.0) + :cm-joint-y (meters 1.0) + :idle-distance (meters 150.0) + :platform #t + :sound-name #f + ) + ) + +;; definition of type ogre-isle +(deftype ogre-isle (ogre-plat) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-isle +(defmethod inspect ogre-isle ((obj ogre-isle)) + (let ((t9-0 (method-of-type ogre-plat inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 31 of type ogre-isle +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-isle ((obj ogre-isle)) + (set! (-> obj idle-y-offset) -6144.0) + (set! (-> obj float-y-offset) 4096.0) + (TODO-RENAME-29 obj *ogre-isle-constants*) + ((the-as (function ogre-plat none) (find-parent-method ogre-isle 31)) obj) + (set! (-> obj active) #t) + 0 + (none) + ) + +;; definition of type ogre-isle-b +(deftype ogre-isle-b (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-isle-b +(defmethod inspect ogre-isle-b ((obj ogre-isle-b)) + (let ((t9-0 (method-of-type ogre-isle inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type ogre-isle-c +(deftype ogre-isle-c (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-isle-c +(defmethod inspect ogre-isle-c ((obj ogre-isle-c)) + (let ((t9-0 (method-of-type ogre-isle inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type ogre-isle-d +(deftype ogre-isle-d (ogre-isle) + () + :heap-base #x2a0 + :method-count-assert 35 + :size-assert #x308 + :flag-assert #x2302a00308 + ) + +;; definition for method 3 of type ogre-isle-d +(defmethod inspect ogre-isle-d ((obj ogre-isle-d)) + (let ((t9-0 (method-of-type ogre-isle inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 31 of type ogre-isle-b +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-isle-b ((obj ogre-isle-b)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 24576.0 + ) + (initialize-skeleton obj *ogre-isle-b-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-b 31)) obj) + 0 + (none) + ) + +;; definition for method 31 of type ogre-isle-c +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-isle-c ((obj ogre-isle-c)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 24576.0 + ) + (initialize-skeleton obj *ogre-isle-b-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-c 31)) obj) + 0 + (none) + ) + +;; definition for method 31 of type ogre-isle-d +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-31 ogre-isle-d ((obj ogre-isle-d)) + (set! (-> obj root-overlay trans x) (+ -8192.0 (-> obj root-overlay trans x))) + (set! (-> obj root-overlay trans z) (+ -8192.0 (-> obj root-overlay trans z))) + (set-vector! + (-> obj root-overlay root-prim local-sphere) + 0.0 + 8192.0 + 0.0 + 22528.0 + ) + (initialize-skeleton obj *ogre-isle-d-sg* '()) + ((the-as (function ogre-isle none) (find-parent-method ogre-isle-d 31)) obj) + 0 + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-bridge-sg* ogre-bridge + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 52) + :longest-edge (meters 4.5) + ) + +;; definition of type ogre-bridge +(deftype ogre-bridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (joint-mod-array joint-mod 8 :offset-assert 176) + (dead-joint-count int8 :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd1 + :flag-assert #x14007000d1 + ) + +;; definition for method 3 of type ogre-bridge +(defmethod inspect ogre-bridge ((obj ogre-bridge)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tjoint-mod-array[8] @ #x~X~%" (-> obj joint-mod-array)) + (format #t "~T~Tdead-joint-count: ~D~%" (-> obj dead-joint-count)) + obj + ) + +;; definition for method 7 of type ogre-bridge +;; INFO: Return type mismatch process-drawable vs ogre-bridge. +(defmethod relocate ogre-bridge ((obj ogre-bridge) (arg0 int)) + (dotimes (v1-0 8) + (if (nonzero? (-> obj joint-mod-array v1-0)) + (&+! (-> obj joint-mod-array v1-0) arg0) + ) + ) + (the-as + ogre-bridge + ((the-as + (function process-drawable int process-drawable) + (find-parent-method ogre-bridge 7) + ) + obj + arg0 + ) + ) + ) + +;; definition for function ogre-bridge-update-joints +;; INFO: Return type mismatch int vs none. +(defbehavior ogre-bridge-update-joints ogre-bridge () + (let ((v1-1 (min 8 (-> self dead-joint-count)))) + (dotimes (a0-1 v1-1) + (let ((a1-2 (-> self joint-mod-array a0-1))) + (set! (-> a1-2 trans z) (the-as float #t)) + (set! (-> a1-2 trans x) (the-as float #t)) + (set! (-> a1-2 trans y) (the-as float #t)) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate ogre-bridge-idle (ogre-bridge) + :exit + (behavior () + (ogre-bridge-update-joints) + (none) + ) + :trans + (behavior () + (if + (and + (and + *target* + (>= + 286720.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + (go ogre-bridge-activate) + ) + 0 + (none) + ) + :code + (behavior () + (ja-post) + (while #t + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate ogre-bridge-activate (ogre-bridge) + :code + (behavior () + (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (when (when v1-0 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'next-stage) + (not (send-event-function (if v1-0 + (-> v1-0 extra process) + ) + a1-1 + ) + ) + ) + ) + (suspend) + 0 + ) + ) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-4 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! + a0-4 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (if (rand-vu-percent? 0.2) + (spawn-projectile-blue *target*) + ) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 param 0) + (the float (+ (-> a0-7 frame-group data 0 length) -1)) + ) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! + a0-7 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go ogre-bridge-activated) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) rider-post) + ) + +;; failed to figure out what this is: +(defstate ogre-bridge-activated (ogre-bridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('break) + (+! (-> self dead-joint-count) 4) + (go ogre-bridge-break) + ) + (('break-no-damage) + (go ogre-bridge-break) + ) + (('complete) + (process-entity-status! self (entity-perm-status complete) #t) + #t + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! + (-> gp-0 frame-num) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + ) + (transform-post) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) ja-post) + ) + +;; failed to figure out what this is: +(defstate ogre-bridge-break (ogre-bridge) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'effect) + (when (= (-> arg3 param 0) 'splash) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (-> arg3 param 2))) + (set! + (-> gp-0 quad) + (-> + self + node-list + data + a1-1 + bone + transform + vector + 3 + quad + ) + ) + ) + (set! (-> gp-0 y) 118784.0) + (let + ((s5-0 + (get-process *default-dead-pool* part-tracker #x4000) + ) + ) + (when s5-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 + (the-as part-tracker s5-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + part-tracker-init + (-> *part-group-id-table* 466) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-0 ppointer) + ) + ) + ) + ) + ) + ) + ) + ) + :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 4)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + 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 4)) + 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 ogre-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior ogre-bridge) rider-post) + ) + +;; definition for symbol *ogre-bridge-joint-array*, type (array uint8) +(define + *ogre-bridge-joint-array* + (the-as (array uint8) + (new + 'static + 'boxed-array + :type uint8 :length 8 :allocated-length 8 + #x4 + #x9 + #xc + #x11 + #x7 + #xa + #xf + #x12 + ) + ) + ) + +;; definition for method 11 of type ogre-bridge +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! ogre-bridge ((obj ogre-bridge) (arg0 res-lump)) + (stack-size-set! (-> obj main-thread) 512) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 5) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 6) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-3 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 7) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-4 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 8) + (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-5 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 9) + (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-6 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 10) + (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-7 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 11) + (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-8 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 12) + (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-9 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 13) + (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-10 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 14) + (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-11 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 15) + (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-12 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 16) + (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-13 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 17) + (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-14 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 18) + (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-15 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 19) + (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) + ) + (dummy-28 s3-0) + (let + ((s2-16 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 2) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-16 collide-with) (the-as uint 16)) + (set! (-> s2-16 prim-core action) (the-as uint 3)) + (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 transform-index) 20) + (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *ogre-bridge-sg* '()) + (logior! (-> obj skel effect flags) 1) + (dotimes (s5-1 8) + (let + ((v1-185 + (new + 'process + 'joint-mod-set-local + obj + (the-as int (-> *ogre-bridge-joint-array* s5-1)) + #f + #f + #f + ) + ) + ) + (set! (-> obj joint-mod-array s5-1) (the-as joint-mod v1-185)) + (vector-reset! (-> v1-185 transform scale)) + ) + ) + (cond + ((and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (set! (-> obj dead-joint-count) 8) + (ogre-bridge-update-joints) + (go ogre-bridge-activated) + ) + (else + (go ogre-bridge-idle) + ) + ) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *ogre-bridgeend-sg* ogre-bridgeend + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -3 8.199999809265137) + :longest-edge (meters 0) + ) + +;; definition of type ogre-bridgeend +(deftype ogre-bridgeend (process-drawable) + ((root-override collide-shape :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type ogre-bridgeend +(defmethod inspect ogre-bridgeend ((obj ogre-bridgeend)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate ogre-bridgeend-idle (ogre-bridgeend) + :code + (behavior () + (transform-post) + (anim-loop) + (none) + ) + ) + +;; definition for method 11 of type ogre-bridgeend +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! ogre-bridgeend ((obj ogre-bridgeend) (arg0 res-lump)) + (let + ((s4-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ogre-bridgeend-sg* '()) + (go ogre-bridgeend-idle) + (none) + ) + +;; definition of type ogre-lava +(deftype ogre-lava (water-anim) + ((idle-anim int32 :offset-assert 220) + (anim int32 :offset-assert 224) + ) + :heap-base #x80 + :method-count-assert 30 + :size-assert #xe4 + :flag-assert #x1e008000e4 + ) + +;; definition for method 3 of type ogre-lava +(defmethod inspect ogre-lava ((obj ogre-lava)) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + (format #t "~T~Tidle-anim: ~D~%" (-> obj idle-anim)) + (format #t "~T~Tanim: ~D~%" (-> obj anim)) + obj + ) + +;; failed to figure out what this is: +(defstate water-vol-idle (ogre-lava) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('submerge1) + (set! (-> self anim) 3) + (go-virtual water-vol-idle) + ) + (('submerge2) + (set! (-> self anim) 5) + (go-virtual water-vol-idle) + ) + (('emerge1) + (set! (-> self anim) 4) + (go-virtual water-vol-idle) + ) + (('emerge2) + (set! (-> self anim) 6) + (go-virtual water-vol-idle) + ) + (('boulder) + (set! (-> self anim) 7) + (go-virtual water-vol-idle) + ) + (else + ((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3) + ) + ) + ) + :code + (behavior () + (ja-channel-push! 2 30) + (let ((gp-0 (-> self skel root-channel 1))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data (-> self idle-anim))) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 0.5) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data (-> self anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (let ((v1-25 (-> self skel root-channel 1))) + (set! (-> v1-25 frame-interp) 0.5) + ) + (ja-post) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 0.5) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-37 (-> self skel root-channel 0))) + (set! + (-> v1-37 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self idle-anim))) + ) + ) + (let ((v1-40 (-> self skel root-channel 0))) + (set! (-> v1-40 num-func) num-func-identity) + (set! (-> v1-40 frame-num) 0.0) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior ogre-lava) #f) + ) + +;; failed to figure out what this is: +(defstate water-vol-startup (ogre-lava) + :virtual #t + :code + (behavior () + (set! (-> self idle-anim) 2) + (set! (-> self anim) (-> self idle-anim)) + (go-virtual water-vol-idle) + (none) + ) + ) + +;; definition for symbol ripple-for-ogre-lava, type ripple-wave-set +(define + ripple-for-ogre-lava + (new 'static 'ripple-wave-set + :count 2 + :converted #f + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 3.0) + (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 1.8) + (new 'static 'ripple-wave) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 22 of type ogre-lava +;; INFO: Return type mismatch symbol vs ripple-wave-set. +(defmethod TODO-RENAME-22 ogre-lava ((obj ogre-lava)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set! (-> v1-2 global-scale) 2048.0) + (set! (-> v1-2 waveform) ripple-for-ogre-lava) + ) + (set! (-> obj flags) (logand -8388609 (-> obj flags))) + (set! (-> obj flags) (logior #x2000000 (-> obj flags))) + (let ((v0-2 'lava)) + (set! (-> obj attack-event) v0-2) + (the-as ripple-wave-set v0-2) + ) + ) + +;; definition of type shortcut-boulder +(deftype shortcut-boulder (process-drawable) + ((root-override collide-shape :offset 112) + (broken-look lod-set :inline :offset-assert 176) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd1 + :flag-assert #x14007000d1 + ) + +;; definition for method 3 of type shortcut-boulder +(defmethod inspect shortcut-boulder ((obj shortcut-boulder)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tbroken-look: #~%" (-> obj broken-look)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *shortcut-boulder-whole-sg* shortcut-boulder + 0 + 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 5.5 0 7.5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *shortcut-boulder-broken-sg* shortcut-boulder + 2 + 4 + ((3 (meters 999999))) + :bounds (static-spherem 0 5.5 0 20) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 475) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x12c + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-shortcut-boulder-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2149 :period 1500 :length 5) + (sp-item 2150 :period 1500 :length 5) + (sp-item 2151 :period 1500 :length 15) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2150) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 130.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 54.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.1333334) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2149) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 16.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.3) 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 70.0 16.0 1.0) + (sp-rnd-flt spt-g 70.0 16.0 1.0) + (sp-flt spt-b 70.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-accel-y -10.922667) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-rnd-flt spt-conerot-x (degrees 20.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2151) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 48.0 1.0) + (sp-rnd-flt spt-b 64.0 16.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.016666668) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-flt spt-accel-y -1.0922667) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 2152) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2152) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.2) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defstate shortcut-boulder-break (shortcut-boulder) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (lods-assign! (-> self draw) (-> self broken-look)) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 + (the-as part-tracker gp-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 475) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-5 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-5 param 1) 1.0) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + (dummy-18 self) + (deactivate self) + (none) + ) + :post + (the-as (function none :behavior shortcut-boulder) ja-post) + ) + +;; failed to figure out what this is: +(defstate shortcut-boulder-idle (shortcut-boulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (go shortcut-boulder-break) + ) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +;; definition for method 11 of type shortcut-boulder +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + shortcut-boulder + ((obj shortcut-boulder) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *shortcut-boulder-whole-sg* '()) + (dummy-9 + (-> obj broken-look) + *shortcut-boulder-broken-sg* + (-> obj draw art-group) + (-> obj entity) + ) + (set-vector! (-> obj draw color-emissive) 0.125 0.0625 0.0 0.0) + (go shortcut-boulder-idle) + (none) + ) diff --git a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc index c7b39e95d6..a778c7d0a2 100644 --- a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc @@ -94,8 +94,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self racer boost-sound-id) @@ -105,8 +105,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (set! @@ -737,8 +737,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (sound-play-by-name (static-sound-name "zoomer-rev2") @@ -746,8 +746,8 @@ 819 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -920,8 +920,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (when arg2 @@ -1204,8 +1204,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (racer-calc-gravity) @@ -1409,8 +1409,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 150) (set! (-> self racer heavy) arg1) @@ -1462,8 +1462,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (ja-channel-push! 2 15) (let ((a0-4 (-> self skel root-channel 0))) @@ -1616,15 +1616,7 @@ (when (!= (-> self attack-info mode) 'endlessfall) (dummy-10 (-> self skel effect) 'group-target-hit -1.0 -1) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 90) - (sound-play-by-name - (static-sound-name "oof") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) + (sound-play-by-name (static-sound-name "oof") (new-sound-id) 1024 0 0 1 #t) ) (set! (-> self game hit-time) (-> *display* base-frame-counter)) (logior! (-> self state-flags) 8) @@ -1775,8 +1767,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-1 @@ -2068,8 +2060,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (let ((gp-5 (get-process *default-dead-pool* part-tracker #x4000))) (when gp-5 @@ -2111,8 +2103,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (camera-change-to (the-as string cam-endlessfall) 30 #f) (set! (-> self control pat-ignore-mask unknown-bit) 1) @@ -2315,8 +2307,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! gp-1 #t) ) @@ -2675,8 +2667,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control transv quad) (the-as uint128 0)) diff --git a/test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc index 369da3bf28..e18b7d06ef 100644 --- a/test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc @@ -288,6 +288,6 @@ 0 3 ((1 (meters 20)) (2 (meters 999999))) - :bounds (static-spherem 0 1.7 0 3) + :bounds (static-spherem 0 1.7000000476837158 0 3) :longest-edge (meters 0) ) diff --git a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc new file mode 100644 index 0000000000..0fa0cac097 --- /dev/null +++ b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc @@ -0,0 +1,1625 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type flutflut-plat +(deftype flutflut-plat (plat) + ((has-path? symbol :offset-assert 264) + (plat-type int32 :offset-assert 268) + (rise-time int32 :offset-assert 272) + (fall-time int32 :offset-assert 276) + (part-ry float :offset-assert 280) + (sync-starting-val float :offset-assert 284) + (flutflut-button entity-actor :offset-assert 288) + (appear-trans-top vector :inline :offset-assert 304) + (appear-trans-bottom vector :inline :offset-assert 320) + (appear-quat-top quaternion :inline :offset-assert 336) + (appear-quat-bottom quaternion :inline :offset-assert 352) + (start-trans vector :inline :offset-assert 368) + ) + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + +;; definition for method 3 of type flutflut-plat +(defmethod inspect flutflut-plat ((obj flutflut-plat)) + (let ((t9-0 (method-of-type plat inspect))) + (t9-0 obj) + ) + (format #t "~T~Thas-path?: ~A~%" (-> obj has-path?)) + (format #t "~T~Tplat-type: ~D~%" (-> obj plat-type)) + (format #t "~T~Trise-time: ~D~%" (-> obj rise-time)) + (format #t "~T~Tfall-time: ~D~%" (-> obj fall-time)) + (format #t "~T~Tpart-ry: ~f~%" (-> obj part-ry)) + (format #t "~T~Tsync-starting-val: ~f~%" (-> obj sync-starting-val)) + (format #t "~T~Tflutflut-button: ~A~%" (-> obj flutflut-button)) + (format + #t + "~T~Tappear-trans-top: #~%" + (-> obj appear-trans-top) + ) + (format + #t + "~T~Tappear-trans-bottom: #~%" + (-> obj appear-trans-bottom) + ) + (format + #t + "~T~Tappear-quat-top: #~%" + (-> obj appear-quat-top) + ) + (format + #t + "~T~Tappear-quat-bottom: #~%" + (-> obj appear-quat-bottom) + ) + (format #t "~T~Tstart-trans: #~%" (-> obj start-trans)) + obj + ) + +;; definition of type snow-button +(deftype snow-button (process-drawable) + ((root-override collide-shape-moving :offset 112) + (wiggled? symbol :offset-assert 176) + (timeout uint64 :offset-assert 184) + (delay-til-wiggle uint64 :offset-assert 192) + (prev-button entity-actor :offset-assert 200) + (ticker ticky :inline :offset-assert 208) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xf0 + :flag-assert #x14008000f0 + ) + +;; definition for method 3 of type snow-button +(defmethod inspect snow-button ((obj snow-button)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Twiggled?: ~A~%" (-> obj wiggled?)) + (format #t "~T~Ttimeout: ~D~%" (-> obj timeout)) + (format #t "~T~Tdelay-til-wiggle: ~D~%" (-> obj delay-til-wiggle)) + (format #t "~T~Tprev-button: ~A~%" (-> obj prev-button)) + (format #t "~T~Tticker: #~%" (-> obj ticker)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *flutflut-plat-small-sg* flutflut-plat-small + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -0.5 0 4) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *flutflut-plat-med-sg* flutflut-plat-med + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -1 0 6.75) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *flutflut-plat-large-sg* flutflut-plat-large + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 9) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *snow-button-sg* snow-button + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4.300000190734863) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 516) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-small" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2087 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2088 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2087) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters -0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-rotate-y (degrees 45.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2088) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-y (meters -1.25)) + (sp-rnd-flt spt-z -12288.0 24576.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters -0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-rotate-y (degrees 45.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 517) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-med" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2089 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2090 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2089) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 3.0) + (sp-flt spt-y (meters -2.5)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 1.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2090) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-flt spt-y (meters -2.25)) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 1.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 518) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-flutflut-plat-large" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2091 :fade-after (meters 50.0) :falloff-to (meters 50.0)) + (sp-item 2092 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2091) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.5)) + (sp-rnd-flt spt-z -24576.0 49152.0 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters -0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-flt spt-rotate-y (degrees 30.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2092) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-flt spt-y (meters -1.25)) + (sp-rnd-flt spt-z -24576.0 49152.0 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters -0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-flt spt-rotate-y (degrees 30.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defstate snow-button-up-idle (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-2 object)) + (case arg2 + (('touch 'attack 'bonk) + (when + (and + (= (-> arg0 type) target) + (logtest? (-> *target* control root-prim prim-core action) #x4000) + (>= + 10649.6 + (vector-vector-xz-distance + (-> self root-override trans) + (target-pos 0) + ) + ) + ) + (close-specific-task! (game-task snow-ball) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-button-activate) + ) + ) + (('query) + (return #f) + v0-2 + ) + ) + ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +;; failed to figure out what this is: +(defstate snow-button-activate (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-0 object)) + (case arg2 + (('untrigger) + (go snow-button-deactivate) + ) + (('query) + (return #t) + v0-0 + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self wiggled?) #f) + (sleep (-> self ticker) (-> self timeout)) + (when (-> self prev-button) + (let* ((v1-6 (-> self prev-button)) + (a0-1 (if v1-6 + (-> v1-6 extra process) + ) + ) + ) + (if a0-1 + (send-event a0-1 'untrigger) + ) + ) + ) + (send-to-all-after (-> self link) 'trigger) + (none) + ) + :trans + (behavior () + (if (completed? (-> self ticker)) + (go snow-button-deactivate) + ) + (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) + (when (not (-> self wiggled?)) + (set! (-> self wiggled?) #t) + (send-to-all-after (-> self link) 'bounce) + ) + ) + (rider-trans) + (none) + ) + :code + (behavior () + (sound-play-by-name + (static-sound-name "prec-button1") + (new-sound-id) + 1024 + -1524 + 0 + 1 + #t + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + :post + (the-as (function none :behavior snow-button) rider-post) + ) + +;; failed to figure out what this is: +(defstate snow-button-deactivate (snow-button) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-0 symbol)) + (case arg2 + (('query) + (return (the-as object #f)) + v0-0 + ) + ) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (none) + ) + :trans + (the-as (function none :behavior snow-button) rider-trans) + :code + (behavior () + (send-to-all-after (-> self link) 'untrigger) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 180) + (suspend) + ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go snow-button-up-idle) + (none) + ) + :post + (the-as (function none :behavior snow-button) rider-post) + ) + +;; definition for method 11 of type snow-button +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! snow-button ((obj snow-button) (arg0 res-lump)) + (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) nothing) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) + ) + (dummy-28 s3-0) + (let + ((s2-2 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 2) + ) + ) + ) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (initialize-skeleton obj *snow-button-sg* '()) + (logior! (-> obj skel status) 1) + (set! + (-> obj timeout) + (the-as + uint + (the int (* 300.0 (res-lump-float arg0 'timeout :default 10.0))) + ) + ) + (set! (-> obj delay-til-wiggle) (+ (-> obj timeout) -120)) + (if (> (entity-actor-count arg0 'alt-actor) 0) + (set! (-> obj prev-button) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> obj prev-button) #f) + ) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (transform-post) + (go snow-button-up-idle) + (none) + ) + +;; definition for method 26 of type flutflut-plat +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod dummy-26 flutflut-plat ((obj flutflut-plat)) + (let ((t9-0 (method-of-type plat dummy-26))) + (t9-0 obj) + ) + (if (zero? (-> obj link)) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + ) + (set! (-> obj sound-id) (new-sound-id)) + (set! (-> obj plat-type) (res-lump-value (-> obj entity) 'mode int)) + (set! + (-> obj flutflut-button) + (entity-actor-lookup (-> obj entity) 'alt-actor 0) + ) + (let ((f0-0 (res-lump-float (-> obj entity) 'rotoffset))) + (if (!= f0-0 0.0) + (quaternion-rotate-y! + (-> obj root-override quat) + (-> obj root-override quat) + f0-0 + ) + ) + ) + (set! + (-> obj has-path?) + (and + (zero? (logand (-> obj path flags) (path-control-flag not-found))) + (> (-> obj sync period) 0) + ) + ) + (when (nonzero? (-> obj plat-type)) + (cond + ((-> obj has-path?) + (set! (-> obj sync-starting-val) (get-phase-offset (-> obj sync))) + (sync-now! (-> obj sync) (-> obj sync-starting-val)) + (eval-path-curve! + (-> obj path) + (-> obj appear-trans-top) + (if (logtest? (-> obj fact options) 8) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) + 'interp + ) + ) + (else + (set! (-> obj appear-trans-top quad) (-> obj root-override trans quad)) + ) + ) + (set! (-> obj appear-trans-bottom quad) (-> obj appear-trans-top quad)) + (set! + (-> obj appear-trans-bottom y) + (+ -286720.0 (-> obj appear-trans-bottom y)) + ) + (quaternion-copy! (-> obj appear-quat-top) (-> obj root-override quat)) + (let ((v1-33 (res-lump-value (-> obj entity) 'extra-id uint128))) + (set! + (-> obj rise-time) + (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33))))) + ) + ) + (set! (-> obj fall-time) 180) + ) + (none) + ) + +;; definition for method 27 of type flutflut-plat +;; INFO: Return type mismatch symbol vs skeleton-group. +(defmethod get-lit-skel flutflut-plat ((obj flutflut-plat)) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (return (the-as skeleton-group #t)) + ) + (when (task-complete? *game-info* (-> obj entity extra perm task)) + (process-entity-status! obj (entity-perm-status complete) #t) + (return (the-as skeleton-group #t)) + ) + (the-as skeleton-group #f) + ) + +;; failed to figure out what this is: +(defstate plat-startup (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (when + (or + (!= (-> self plat-type) 1) + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear) + ) + ) + ) + ) + :code + (behavior ((arg0 plat)) + (cond + ((and + (= (-> self plat-type) 1) + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (set! (-> self basetrans quad) (-> self appear-trans-top quad)) + (go elevator-idle-at-cave) + ) + ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) + (let* ((v1-11 (-> self flutflut-button)) + (a0-10 (if v1-11 + (-> v1-11 extra process) + ) + ) + ) + (if (and a0-10 (send-event a0-10 'query)) + (go flutflut-plat-appear) + (go flutflut-plat-hidden-idle) + ) + ) + ) + (else + (let ((t9-4 (-> (method-of-type plat plat-startup) code))) + (if t9-4 + ((the-as (function none :behavior plat) t9-4)) + ) + ) + ) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate flutflut-plat-hidden-idle (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear) + ) + ) + ) + :trans + (behavior () + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) + (go flutflut-plat-appear) + ) + (none) + ) + :code + (behavior () + (logior! (-> self draw status) 2) + (dummy-48 (-> self root-override)) + (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) + ) + +;; failed to figure out what this is: +(defstate flutflut-plat-appear (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (dummy-49 (-> self root-override)) + (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion)) + ) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) + (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) + ) + (quaternion-vector-angle! + (-> self appear-quat-bottom) + s5-0 + (rand-vu-float-range -21845.334 21845.334) + ) + (quaternion-axis-angle! + gp-0 + 0.0 + 1.0 + 0.0 + (rand-vu-float-range -32768.0 32768.0) + ) + (quaternion*! + (-> self appear-quat-bottom) + (-> self appear-quat-bottom) + gp-0 + ) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (behavior () + (plat-trans) + (let* + ((f0-1 + (fmin + 1.0 + (/ + (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (the float (-> self rise-time)) + ) + ) + ) + (f0-2 (- 1.0 f0-1)) + (f0-3 (* f0-2 f0-2)) + (f30-0 (- 1.0 f0-3)) + ) + (vector-lerp! + (-> self basetrans) + (-> self appear-trans-bottom) + (-> self appear-trans-top) + f30-0 + ) + (quaternion-slerp! + (-> self root-override quat) + (-> self appear-quat-bottom) + (-> self appear-quat-top) + f30-0 + ) + (set-vector! (-> self draw color-mult) f30-0 f30-0 f30-0 1.0) + (when (>= f30-0 1.0) + (dummy-22 self) + (rider-post) + (cond + ((= (-> self plat-type) 1) + (if + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + (go elevator-idle-at-cave) + (go-virtual plat-idle) + ) + ) + ((-> self has-path?) + (let ((a0-9 (-> self sync))) + (sync-now! a0-9 (-> self sync-starting-val)) + (go-virtual plat-path-active (the-as plat a0-9)) + ) + ) + (else + (go-virtual plat-idle) + ) + ) + ) + ) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) rider-post) + ) + +;; failed to figure out what this is: +(defstate plat-idle (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ((= v1-0 'untrigger) + (go flutflut-plat-hide) + ) + ) + ) + ) + ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) + (if t9-0 + (t9-0) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) + ) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) + (if t9-0 + (t9-0) + ) + ) + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) + (go elevator-idle-at-cave) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate plat-path-active (flutflut-plat) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ((= v1-0 'untrigger) + (go flutflut-plat-hide) + ) + ) + ) + ) + ) + :enter + (behavior ((arg0 plat)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) + (if t9-0 + (t9-0 arg0) + ) + ) + (if + (or + (!= (-> self plat-type) 1) + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate flutflut-plat-hide (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (= v1-0 'bonk) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! + (-> self root-override root-prim prim-core action) + (logand -3 (-> self root-override root-prim prim-core action)) + ) + (set! (-> self start-trans quad) (-> self root-override trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion)) + ) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) + (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) + ) + (quaternion-vector-angle! + (-> self appear-quat-bottom) + s5-0 + (rand-vu-float-range -21845.334 21845.334) + ) + (quaternion-axis-angle! + gp-0 + 0.0 + 1.0 + 0.0 + (rand-vu-float-range -32768.0 32768.0) + ) + (quaternion*! + (-> self appear-quat-bottom) + (-> self appear-quat-bottom) + gp-0 + ) + ) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logior! (-> self root-override root-prim prim-core action) 2) + (none) + ) + :trans + (behavior () + (plat-trans) + (let* + ((f0-1 + (fmin + 1.0 + (/ + (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (the float (-> self fall-time)) + ) + ) + ) + (f30-0 (* f0-1 f0-1)) + ) + (vector-lerp! + (-> self basetrans) + (-> self start-trans) + (-> self appear-trans-bottom) + f30-0 + ) + (quaternion-slerp! + (-> self root-override quat) + (-> self appear-quat-top) + (-> self appear-quat-bottom) + f30-0 + ) + (let ((f0-3 (- 1.0 f30-0))) + (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 1.0) + ) + (when (>= f30-0 1.0) + (rider-post) + (go flutflut-plat-hidden-idle) + ) + ) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) rider-post) + ) + +;; failed to figure out what this is: +(defstate elevator-idle-at-cave (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'bonk) + (dummy-22 self) + ) + ((= v1-0 'bounce) + (if + (not + (and + (-> self entity) + (logtest? + (-> self entity extra perm status) + (entity-perm-status complete) + ) + ) + ) + (dummy-22 self) + ) + ) + ((= v1-0 'ridden) + (if + (or + (not *target*) + (zero? + (logand + (-> *target* control root-prim prim-core action) + #x4000 + ) + ) + ) + (go elevator-travel-to-fort) + ) + ) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self path-pos) 0.0) + (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp) + (none) + ) + :trans + (behavior () + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +;; failed to figure out what this is: +(defstate elevator-travel-to-fort (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :trans + (behavior () + (when (= (-> self path-pos) 1.0) + (dummy-22 self) + (go elevator-idle-at-fort) + ) + (set! + (-> self path-pos) + (seek + (-> self path-pos) + 1.0 + (* 0.06666667 (-> *display* seconds-per-frame)) + ) + ) + (eval-path-curve! + (-> self path) + (-> self basetrans) + (-> self path-pos) + 'interp + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +;; failed to figure out what this is: +(defstate elevator-idle-at-fort (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :enter + (behavior () + (set! (-> self path-pos) 1.0) + (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp) + (none) + ) + :trans + (behavior () + (when *target* + (if + (and + (>= 798720.0 (-> (target-pos 0) y)) + (not + (and + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + ) + (go elevator-travel-to-cave) + ) + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +;; failed to figure out what this is: +(defstate elevator-travel-to-cave (flutflut-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) + (dummy-22 self) + ) + ) + ) + ) + :trans + (behavior () + (when (= (-> self path-pos) 0.0) + (dummy-22 self) + (go elevator-idle-at-cave) + ) + (set! + (-> self path-pos) + (seek + (-> self path-pos) + 0.0 + (* 0.06666667 (-> *display* seconds-per-frame)) + ) + ) + (eval-path-curve! + (-> self path) + (-> self basetrans) + (-> self path-pos) + 'interp + ) + (plat-trans) + (dummy-20 self) + (none) + ) + :code + (the-as (function none :behavior flutflut-plat) anim-loop) + :post + (the-as (function none :behavior flutflut-plat) plat-post) + ) + +;; definition of type flutflut-plat-small +(deftype flutflut-plat-small (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + +;; definition for method 3 of type flutflut-plat-small +(defmethod inspect flutflut-plat-small ((obj flutflut-plat-small)) + (let ((t9-0 (method-of-type flutflut-plat inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type flutflut-plat-med +(deftype flutflut-plat-med (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + +;; definition for method 3 of type flutflut-plat-med +(defmethod inspect flutflut-plat-med ((obj flutflut-plat-med)) + (let ((t9-0 (method-of-type flutflut-plat inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type flutflut-plat-large +(deftype flutflut-plat-large (flutflut-plat) + () + :heap-base #x110 + :method-count-assert 33 + :size-assert #x180 + :flag-assert #x2101100180 + ) + +;; definition for method 3 of type flutflut-plat-large +(defmethod inspect flutflut-plat-large ((obj flutflut-plat-large)) + (let ((t9-0 (method-of-type flutflut-plat inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 23 of type flutflut-plat-small +(defmethod get-unlit-skel flutflut-plat-small ((obj flutflut-plat-small)) + *flutflut-plat-small-sg* + ) + +;; definition for method 25 of type flutflut-plat-small +;; INFO: Return type mismatch sparticle-launch-control vs sparticle-launch-group. +(defmethod TODO-RENAME-25 flutflut-plat-small ((obj flutflut-plat-small)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 516) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +;; definition for method 20 of type flutflut-plat-small +;; INFO: Return type mismatch object vs none. +(defmethod dummy-20 flutflut-plat-small ((obj flutflut-plat-small)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 2087 init-specs 12 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 2088 init-specs 17 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + +;; definition for method 26 of type flutflut-plat-small +;; INFO: Return type mismatch float vs none. +(defmethod dummy-26 flutflut-plat-small ((obj flutflut-plat-small)) + (let ((t9-0 (method-of-type flutflut-plat dummy-26))) + (t9-0 obj) + ) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +;; definition for method 24 of type flutflut-plat-small +;; INFO: Return type mismatch int vs none. +(defmethod dummy-24 flutflut-plat-small ((obj flutflut-plat-small)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 23 of type flutflut-plat-med +(defmethod get-unlit-skel flutflut-plat-med ((obj flutflut-plat-med)) + *flutflut-plat-med-sg* + ) + +;; definition for method 25 of type flutflut-plat-med +;; INFO: Return type mismatch sparticle-launch-control vs sparticle-launch-group. +(defmethod TODO-RENAME-25 flutflut-plat-med ((obj flutflut-plat-med)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 517) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +;; definition for method 24 of type flutflut-plat-med +;; INFO: Return type mismatch int vs none. +(defmethod dummy-24 flutflut-plat-med ((obj flutflut-plat-med)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 23 of type flutflut-plat-large +(defmethod get-unlit-skel flutflut-plat-large ((obj flutflut-plat-large)) + *flutflut-plat-large-sg* + ) + +;; definition for method 25 of type flutflut-plat-large +;; INFO: Return type mismatch sparticle-launch-control vs sparticle-launch-group. +(defmethod TODO-RENAME-25 flutflut-plat-large ((obj flutflut-plat-large)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 518) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +;; definition for method 20 of type flutflut-plat-large +;; INFO: Return type mismatch object vs none. +(defmethod dummy-20 flutflut-plat-large ((obj flutflut-plat-large)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 2091 init-specs 12 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 2092 init-specs 17 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + +;; definition for method 26 of type flutflut-plat-large +;; INFO: Return type mismatch float vs none. +(defmethod dummy-26 flutflut-plat-large ((obj flutflut-plat-large)) + (let ((t9-0 (method-of-type flutflut-plat dummy-26))) + (t9-0 obj) + ) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +;; definition for method 24 of type flutflut-plat-large +;; INFO: Return type mismatch int vs none. +(defmethod dummy-24 flutflut-plat-large ((obj flutflut-plat-large)) + (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) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) diff --git a/test/decompiler/reference/levels/snow/yeti_REF.gc b/test/decompiler/reference/levels/snow/yeti_REF.gc index 6c9b74a542..bdee48bdfa 100644 --- a/test/decompiler/reference/levels/snow/yeti_REF.gc +++ b/test/decompiler/reference/levels/snow/yeti_REF.gc @@ -59,8 +59,8 @@ 0 -1 ((1 (meters 999999))) - :bounds (static-spherem 0 0.75 0 3.9) - :longest-edge (meters 1.3) + :bounds (static-spherem 0 0.75 0 3.9000000953674316) + :longest-edge (meters 1.2999999523162842) ) ;; definition for symbol *yeti-nav-enemy-info*, type nav-enemy-info diff --git a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc index 5846f1299e..ca31cac8bd 100644 --- a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc @@ -287,8 +287,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (else @@ -304,8 +304,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -535,7 +535,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) - (start-hint-timer (game-text-id sunken-qbert-hint)) + (start-hint-timer (game-text-id sunken-qbert-plat-hint)) (close-specific-task! (game-task sunken-platforms) (task-status need-hint) @@ -556,7 +556,7 @@ ) (if (zero? (logand v1-3 (-> self plat-states))) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* @@ -627,7 +627,7 @@ (when (not (-> self player-in-water?)) (set! gp-0 #t) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* @@ -652,7 +652,7 @@ (when (and (not s5-2) (-> self player-in-bounds?)) (set! gp-0 #t) (level-hint-spawn - (game-text-id sunken-qbert-hint) + (game-text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* diff --git a/test/decompiler/reference/levels/sunken/square-platform_REF.gc b/test/decompiler/reference/levels/sunken/square-platform_REF.gc index 9776870996..ff0792f0f4 100644 --- a/test/decompiler/reference/levels/sunken/square-platform_REF.gc +++ b/test/decompiler/reference/levels/sunken/square-platform_REF.gc @@ -347,8 +347,8 @@ sv-48 a3-0 t0-0 - (the-as uint t1-0) - (the-as vector t2-0) + t1-0 + t2-0 ) ) ) diff --git a/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc new file mode 100644 index 0000000000..c871ac1938 --- /dev/null +++ b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc @@ -0,0 +1,885 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type water-vol-deadly +(deftype water-vol-deadly (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + +;; definition for method 3 of type water-vol-deadly +(defmethod inspect water-vol-deadly ((obj water-vol-deadly)) + (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 + ) + +;; definition of type side-to-side-plat +(deftype side-to-side-plat (plat) + ((part-ry float :offset-assert 264) + ) + :heap-base #xa0 + :method-count-assert 33 + :size-assert #x10c + :flag-assert #x2100a0010c + ) + +;; definition for method 3 of type side-to-side-plat +(defmethod inspect side-to-side-plat ((obj side-to-side-plat)) + (let ((t9-0 (method-of-type plat inspect))) + (t9-0 obj) + ) + (format #t "~T~Tpart-ry: ~f~%" (-> obj part-ry)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *side-to-side-plat-sg* side-to-side-plat + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 14) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 436) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-side-to-side-plat" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1713 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 1714 :fade-after (meters 160.0) :falloff-to (meters 160.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1713) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-flt spt-rotate-y (degrees 18.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1714) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 1.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-flt spt-rotate-y (degrees 18.0)) + (sp-end) + ) + ) + ) + +;; definition for method 23 of type side-to-side-plat +(defmethod get-unlit-skel side-to-side-plat ((obj side-to-side-plat)) + *side-to-side-plat-sg* + ) + +;; definition for method 24 of type side-to-side-plat +;; INFO: Return type mismatch int vs none. +(defmethod dummy-24 side-to-side-plat ((obj side-to-side-plat)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + 0 + (none) + ) + +;; definition for method 26 of type side-to-side-plat +;; INFO: Return type mismatch float vs none. +(defmethod dummy-26 side-to-side-plat ((obj side-to-side-plat)) + (set! + (-> obj part-ry) + (+ 16384.0 (quaternion-y-angle (-> obj root-override quat))) + ) + (none) + ) + +;; definition for method 25 of type side-to-side-plat +;; INFO: Return type mismatch sparticle-launch-control vs sparticle-launch-group. +(defmethod TODO-RENAME-25 side-to-side-plat ((obj side-to-side-plat)) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 436) obj))) + (set! (-> obj part) v0-0) + (the-as sparticle-launch-group v0-0) + ) + ) + +;; definition for method 20 of type side-to-side-plat +;; INFO: Return type mismatch object vs none. +(defmethod dummy-20 side-to-side-plat ((obj side-to-side-plat)) + (when (nonzero? (-> obj part)) + (set! + (-> *part-id-table* 1713 init-specs 14 initial-valuef) + (-> obj part-ry) + ) + (set! + (-> *part-id-table* 1714 init-specs 19 initial-valuef) + (-> obj part-ry) + ) + (spawn (-> obj part) (-> obj root-override trans)) + ) + (none) + ) + +;; definition of type sunkencam +(deftype sunkencam (pov-camera) + ((seq uint64 :offset-assert 224) + ) + :heap-base #x80 + :method-count-assert 30 + :size-assert #xe8 + :flag-assert #x1e008000e8 + ) + +;; definition for method 3 of type sunkencam +(defmethod inspect sunkencam ((obj sunkencam)) + (let ((t9-0 (method-of-type pov-camera inspect))) + (t9-0 obj) + ) + (format #t "~T~Tseq: ~D~%" (-> obj seq)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *sunkencam-sg* sunkencam + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +;; definition for method 29 of type sunkencam +(defmethod set-stack-size! sunkencam ((obj sunkencam)) + (stack-size-set! (-> obj main-thread) 512) + (none) + ) + +;; failed to figure out what this is: +(defstate pov-camera-playing (sunkencam) + :virtual #t + :exit + (behavior () + (set! (-> *screen-filter* draw?) #f) + (none) + ) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + 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 5)) + 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! + ) + ) + ) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 6)) + ) + (set! + (-> a0-3 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 6)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-3 param 1) 1.0) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! + a0-3 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 param 0) + (the float (+ (-> a0-4 frame-group data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! + a0-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-45 *screen-filter*)) + (set! (-> v1-45 draw?) #t) + (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) + ) + (set-blackout-frames 30) + (let ((a0-9 (-> self skel root-channel 0))) + (set! + (-> a0-9 frame-group) + (the-as art-joint-anim (-> self draw art-group data 7)) + ) + (set! + (-> a0-9 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 7)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-9 param 1) 1.0) + (set! (-> a0-9 frame-num) 0.0) + (joint-control-channel-group! + a0-9 + (the-as art-joint-anim (-> self draw art-group data 7)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-10 (-> self skel root-channel 0))) + (set! + (-> a0-10 param 0) + (the float (+ (-> a0-10 frame-group data 0 length) -1)) + ) + (set! (-> a0-10 param 1) 1.0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set-blackout-frames 150) + (let ((gp-0 2)) + (let ((a0-13 (-> self skel root-channel 0))) + (set! + (-> a0-13 frame-group) + (the-as art-joint-anim (-> self draw art-group data 8)) + ) + (set! + (-> a0-13 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 8)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-13 param 1) 1.0) + (set! (-> a0-13 frame-num) 0.0) + (joint-control-channel-group! + a0-13 + (the-as art-joint-anim (-> self draw art-group data 8)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! gp-0 -1) + (if (zero? gp-0) + (set! (-> *screen-filter* draw?) #f) + ) + (suspend) + (let ((a0-14 (-> self skel root-channel 0))) + (set! + (-> a0-14 param 0) + (the float (+ (-> a0-14 frame-group data 0 length) -1)) + ) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! + a0-14 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (set-blackout-frames 30) + ) + ((= v1-0 1) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 frame-group) + (the-as art-joint-anim (-> self draw art-group data 9)) + ) + (set! + (-> a0-18 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 9)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-18 param 1) 1.0) + (set! (-> a0-18 frame-num) 0.0) + (joint-control-channel-group! + a0-18 + (the-as art-joint-anim (-> self draw art-group data 9)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-19 (-> self skel root-channel 0))) + (set! + (-> a0-19 param 0) + (the float (+ (-> a0-19 frame-group data 0 length) -1)) + ) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((v1-116 *screen-filter*)) + (set! (-> v1-116 draw?) #t) + (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) + ) + (set-blackout-frames 30) + (let ((a0-24 (-> self skel root-channel 0))) + (set! + (-> a0-24 frame-group) + (the-as art-joint-anim (-> self draw art-group data 10)) + ) + (set! + (-> a0-24 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 10)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-24 param 1) 1.0) + (set! (-> a0-24 frame-num) 0.0) + (joint-control-channel-group! + a0-24 + (the-as art-joint-anim (-> self draw art-group data 10)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-25 (-> self skel root-channel 0))) + (set! + (-> a0-25 param 0) + (the float (+ (-> a0-25 frame-group data 0 length) -1)) + ) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! + a0-25 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set-blackout-frames 30) + (let ((gp-1 2)) + (let ((a0-28 (-> self skel root-channel 0))) + (set! + (-> a0-28 frame-group) + (the-as art-joint-anim (-> self draw art-group data 11)) + ) + (set! + (-> a0-28 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 11)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-28 param 1) 1.0) + (set! (-> a0-28 frame-num) 0.0) + (joint-control-channel-group! + a0-28 + (the-as art-joint-anim (-> self draw art-group data 11)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! gp-1 -1) + (if (zero? gp-1) + (set! (-> *screen-filter* draw?) #f) + ) + (suspend) + (let ((a0-29 (-> self skel root-channel 0))) + (set! + (-> a0-29 param 0) + (the float (+ (-> a0-29 frame-group data 0 length) -1)) + ) + (set! (-> a0-29 param 1) 1.0) + (joint-control-channel-group-eval! + a0-29 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (let ((gp-2 *camera*)) + (send-event gp-2 'teleport) + (send-event gp-2 'change-state cam-fixed 0) + (send-event gp-2 'change-state *camera-base-mode* 0) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (suspend) + ) + ) + ((= v1-0 2) + (let ((a0-36 (-> self skel root-channel 0))) + (set! + (-> a0-36 frame-group) + (the-as art-joint-anim (-> self draw art-group data 16)) + ) + (set! + (-> a0-36 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 16)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-36 param 1) 1.0) + (set! (-> a0-36 frame-num) 0.0) + (joint-control-channel-group! + a0-36 + (the-as art-joint-anim (-> self draw art-group data 16)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-37 (-> self skel root-channel 0))) + (set! + (-> a0-37 param 0) + (the float (+ (-> a0-37 frame-group data 0 length) -1)) + ) + (set! (-> a0-37 param 1) 1.0) + (joint-control-channel-group-eval! + a0-37 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((a0-39 (-> self skel root-channel 0))) + (set! + (-> a0-39 frame-group) + (the-as art-joint-anim (-> self draw art-group data 17)) + ) + (set! + (-> a0-39 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 17)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-39 param 1) 0.67) + (set! (-> a0-39 frame-num) 0.0) + (joint-control-channel-group! + a0-39 + (the-as art-joint-anim (-> self draw art-group data 17)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-40 (-> self skel root-channel 0))) + (set! + (-> a0-40 param 0) + (the float (+ (-> a0-40 frame-group data 0 length) -1)) + ) + (set! (-> a0-40 param 1) 0.67) + (joint-control-channel-group-eval! + a0-40 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 18)) + (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) + 0.67 + ) + ) + ((= v1-0 3) + (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 12)) + (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) + 1.0 + ) + ) + ((= v1-0 4) + (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 13)) + (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) + 1.3 + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + (suspend) + ) + ) + ((= v1-0 5) + (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 14)) + (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) + 1.0 + ) + ) + ((= v1-0 6) + (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 15)) + (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) + 1.0 + ) + ) + (else + (suspend) + 0 + ) + ) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +;; definition of type seaweed +(deftype seaweed (process-drawable) + ((anim-speed float :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; definition for method 3 of type seaweed +(defmethod inspect seaweed ((obj seaweed)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tanim-speed: ~f~%" (-> obj anim-speed)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *seaweed-sg* seaweed + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 6 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate seaweed-idle (seaweed) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 param 0) + (the float (+ (-> a0-0 frame-group data 0 length) -1)) + ) + (set! (-> a0-0 param 1) (-> self anim-speed)) + (joint-control-channel-group! + a0-0 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (while (not (ja-done? 0)) + (suspend) + (ja-eval) + ) + (while #t + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) (-> self anim-speed)) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) (-> self anim-speed)) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior seaweed) ja-post) + ) + +;; definition for method 11 of type seaweed +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! seaweed ((obj seaweed) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *seaweed-sg* '()) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! + (-> s5-1 frame-num) + (rand-vu-float-range + 0.0 + (the float (+ (-> (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + (set! (-> obj anim-speed) (rand-vu-float-range 0.2 0.4)) + (set! *seaweed* obj) + (go seaweed-idle) + (none) + ) diff --git a/test/decompiler/reference/levels/sunken/sunken-water_REF.gc b/test/decompiler/reference/levels/sunken/sunken-water_REF.gc index 1798977413..d2f368ebec 100644 --- a/test/decompiler/reference/levels/sunken/sunken-water_REF.gc +++ b/test/decompiler/reference/levels/sunken/sunken-water_REF.gc @@ -163,8 +163,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) @@ -221,8 +221,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) (update! (-> self sound)) @@ -266,8 +266,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc index 0c2d6f9f39..1272cbde94 100644 --- a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc @@ -82,8 +82,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -165,8 +165,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (none) ) @@ -254,8 +254,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) (set! gp-0 #t) ) diff --git a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc new file mode 100644 index 0000000000..46ac531892 --- /dev/null +++ b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc @@ -0,0 +1,1627 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 289) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-spike-up" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1325 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1326 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1327 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1325) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters 0.75)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 48.0 24.0 1.0) + (sp-rnd-flt spt-b 48.0 8.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-accel-y -0.13653333 -0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1328) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1328) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.32) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1326) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters -0.75)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 36.0 18.0 1.0) + (sp-rnd-flt spt-b 24.0 4.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-accel-y 0.13653333 0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1328) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1327) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-int-flt spt-x (meters -2.0) 2 8192.0) + (sp-flt spt-y (meters 0.25)) + (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 64.0 16.0 1.0) + (sp-rnd-flt spt-g 48.0 16.0 1.0) + (sp-rnd-flt spt-b 48.0 16.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -13.653334) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-int spt-next-time 390) + (sp-launcher-by-id spt-next-launcher 1329) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees -179.3918)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 290) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-spike-down" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1325 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + (sp-item 1326 :fade-after (meters 120.0) :falloff-to (meters 120.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; definition of type swamp-spike +(deftype swamp-spike (process-drawable) + ((root-override collide-shape :offset 112) + (sync sync-info :inline :offset-assert 176) + (open-gate symbol :offset-assert 184) + (dangerous symbol :offset-assert 188) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc0 + :flag-assert #x15005000c0 + (:methods + (init! (_type_) symbol 20) + ) + ) + +;; definition for method 3 of type swamp-spike +(defmethod inspect swamp-spike ((obj swamp-spike)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Topen-gate: ~A~%" (-> obj open-gate)) + (format #t "~T~Tdangerous: ~A~%" (-> obj dangerous)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *swamp-spike-sg* swamp-spike + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 5 0 6) + :longest-edge (meters 2.5) + ) + +;; definition for function swamp-spike-default-event-handler +(defbehavior + swamp-spike-default-event-handler swamp-spike + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (when (-> self dangerous) + (if + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + ) + ) + ) + ) + ) + +;; definition for function swamp-spike-set-particle-rotation-callback +;; INFO: Return type mismatch int vs none. +(defun swamp-spike-set-particle-rotation-callback ((arg0 part-tracker)) + (let* ((v1-0 (the-as object (-> arg0 userdata))) + (f0-1 + (+ + -65314.562 + (quaternion-y-angle + (-> (the-as (pointer swamp-spike) v1-0) 0 root-override quat) + ) + ) + ) + ) + (set! (-> *part-id-table* 1325 init-specs 20 initial-valuef) f0-1) + (set! (-> *part-id-table* 1326 init-specs 20 initial-valuef) f0-1) + (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1) + ) + 0 + (none) + ) + +;; definition for function swamp-spike-post +(defbehavior swamp-spike-post swamp-spike () + (transform-post) + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 to) (the-as process 1)) + (set! (-> a1-0 from) (the-as process *touching-list*)) + (if (dummy-40 (-> self root-override) a1-0) + (dummy-45 (-> self root-override)) + ) + ) + (none) + ) + +;; failed to figure out what this is: +(defstate swamp-spike-idle (swamp-spike) + :event + swamp-spike-default-event-handler + :code + (behavior () + (set! (-> self dangerous) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (vector-z-quaternion! gp-0 (-> self root-override quat)) + (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root-override trans)))) + (while #t + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-10 (-> self skel root-channel 0))) + (set! + (-> v1-10 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + ) + (until (>= (get-current-phase (-> self sync)) 0.5) + (let ((v1-13 (-> self skel root-channel 0))) + (set! (-> v1-13 num-func) num-func-identity) + (set! (-> v1-13 frame-num) 0.0) + ) + (suspend) + ) + (let + ((s5-0 + (or + (not *target*) + (< + 204800.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + ) + ) + (if + (and + (and + *target* + (>= + 61440.0 + (vector-vector-distance + (-> self root-override trans) + (-> *target* control trans) + ) + ) + ) + *camera* + ) + (set! + s5-0 + (< + (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) + 0.0 + ) + ) + ) + (cond + (s5-0 + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend) + ) + ) + (else + (let ((a0-11 (-> self skel root-channel 0))) + (set! + (-> a0-11 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-11 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-11 param 1) 1.0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! + (-> a0-12 param 0) + (the float (+ (-> a0-12 frame-group data 0 length) -1)) + ) + (set! (-> a0-12 param 1) 1.0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (when (logtest? (-> self draw status) 8) + (let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-3 + (let ((t9-11 (method-of-type part-tracker activate))) + (t9-11 + (the-as part-tracker s5-3) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-3 + part-tracker-init + (-> *part-group-id-table* 289) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> s5-3 ppointer) + ) + ) + ) + (set! (-> self dangerous) #t) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-17 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-17 param 1) 1.0) + (set! (-> a0-17 frame-num) 0.0) + (joint-control-channel-group! + a0-17 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 param 0) + (the float (+ (-> a0-18 frame-group data 0 length) -1)) + ) + (set! (-> a0-18 param 1) 1.0) + (joint-control-channel-group-eval! + a0-18 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (set! (-> self dangerous) #f) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-96 (-> self skel root-channel 0))) + (set! (-> v1-96 num-func) num-func-identity) + (set! + (-> v1-96 frame-num) + (the float (+ (-> v1-96 frame-group data 0 length) -1)) + ) + ) + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend) + ) + (when (logtest? (-> self draw status) 8) + (let ((s5-4 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-4 + (let ((t9-18 (method-of-type part-tracker activate))) + (t9-18 + (the-as part-tracker s5-4) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-4 + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> s5-4 ppointer) + ) + ) + ) + (let ((a0-29 (-> self skel root-channel 0))) + (set! + (-> a0-29 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-29 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-29 param 1) 1.0) + (set! (-> a0-29 frame-num) 0.0) + (joint-control-channel-group! + a0-29 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-30 (-> self skel root-channel 0))) + (set! + (-> a0-30 param 0) + (the float (+ (-> a0-30 frame-group data 0 length) -1)) + ) + (set! (-> a0-30 param 1) 1.0) + (joint-control-channel-group-eval! + a0-30 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ) + ) + ) + ) + (none) + ) + :post + swamp-spike-post + ) + +;; failed to figure out what this is: +(defstate swamp-spike-gate-up (swampgate) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'trigger) + (let ((v0-0 #t)) + (set! (-> self open-gate) v0-0) + v0-0 + ) + ) + ) + ) + ) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((v1-4 (-> self skel root-channel 0))) + (set! + (-> v1-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + ) + (until (-> self open-gate) + (let ((v1-7 (-> self skel root-channel 0))) + (set! (-> v1-7 num-func) num-func-identity) + (set! (-> v1-7 frame-num) 0.0) + ) + (suspend) + ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 + (the-as part-tracker gp-0) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-7 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-7 param 1) 1.0) + (set! (-> a0-7 frame-num) 0.0) + (joint-control-channel-group! + a0-7 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! + (-> a0-8 param 0) + (the float (+ (-> a0-8 frame-group data 0 length) -1)) + ) + (set! (-> a0-8 param 1) 1.0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go swamp-spike-gate-down) + (none) + ) + :post + (the-as (function none :behavior swampgate) swamp-spike-post) + ) + +;; failed to figure out what this is: +(defstate swamp-spike-gate-down (swampgate) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (dummy-18 self) + (none) + ) + :post + (the-as (function none :behavior swampgate) swamp-spike-post) + ) + +;; definition for method 20 of type swamp-spike +(defmethod init! swamp-spike ((obj swamp-spike)) + (let + ((s5-0 + (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) + (dummy-46 s5-0) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 1) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) + ) + (dummy-28 s4-0) + (let + ((s3-1 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 1) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-1 collide-with) (the-as uint 16)) + (set! (-> s3-1 prim-core action) (the-as uint 1)) + (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 transform-index) 3) + (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) + ) + (dummy-28 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-override) s5-0) + ) + (process-drawable-from-entity! obj (-> obj entity)) + (initialize-skeleton obj *swamp-spike-sg* '()) + (set! (-> obj draw origin-joint-index) (the-as uint 3)) + (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) + (set! (-> obj open-gate) #f) + (set! (-> obj dangerous) #f) + #f + ) + +;; definition for method 11 of type swamp-spike +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! swamp-spike ((obj swamp-spike) (arg0 res-lump)) + (init! obj) + (go swamp-spike-idle) + (none) + ) + +;; definition of type swampgate +(deftype swampgate (swamp-spike) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc0 + :flag-assert #x15005000c0 + ) + +;; definition for method 3 of type swampgate +(defmethod inspect swampgate ((obj swampgate)) + (let ((t9-0 (method-of-type swamp-spike inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for method 11 of type swampgate +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! swampgate ((obj swampgate) (arg0 res-lump)) + (init! obj) + (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) + (go swamp-spike-gate-down) + (go swamp-spike-gate-up) + ) + (none) + ) + +;; definition of type balance-plat +(deftype balance-plat (process-drawable) + ((root-override collide-shape-moving :offset 112) + (y-travel float :offset-assert 176) + (y-init float :offset-assert 180) + (y-offset float :offset-assert 184) + (y-vel float :offset-assert 188) + (y-accel float :offset-assert 192) + (got-grow symbol :offset-assert 196) + ) + :heap-base #x60 + :method-count-assert 20 + :size-assert #xc8 + :flag-assert #x14006000c8 + ) + +;; definition for method 3 of type balance-plat +(defmethod inspect balance-plat ((obj balance-plat)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Ty-travel: ~f~%" (-> obj y-travel)) + (format #t "~T~Ty-init: ~f~%" (-> obj y-init)) + (format #t "~T~Ty-offset: ~f~%" (-> obj y-offset)) + (format #t "~T~Ty-vel: ~f~%" (-> obj y-vel)) + (format #t "~T~Ty-accel: ~f~%" (-> obj y-accel)) + (format #t "~T~Tgot-grow: ~A~%" (-> obj got-grow)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *balance-plat-sg* balance-plat + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate balance-plat-idle (balance-plat) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'grow) + (let ((v0-0 #t)) + (set! (-> self got-grow) v0-0) + v0-0 + ) + ) + ) + ) + ) + :trans + (the-as (function none :behavior balance-plat) rider-trans) + :code + (behavior () + (while #t + (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) + (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel)))) + ) + (cond + ((and + (-> self root-override riders) + (nonzero? (-> self root-override riders num-riders)) + ) + (send-event *target* 'no-look-around 75) + (set! + (-> self y-accel) + (fmin 4.096 (fmax -4.096 (+ -0.2048 (-> self y-accel)))) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (send-to-all-after (-> self link) 'grow) + (send-to-all-before (-> self link) 'grow) + ) + ((-> self got-grow) + (set! (-> self got-grow) #f) + (set! + (-> self y-accel) + (fmin 4.096 (fmax -4.096 (+ 0.2048 (-> self y-accel)))) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + ) + ((< (-> self y-offset) 0.0) + (set! + (-> self y-accel) + (fmin + (fmin 4.096 (fmax -4.096 (+ 0.1024 (-> self y-accel)))) + (* -0.0001 (-> self y-offset)) + ) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (set! (-> self y-vel) (* 0.99 (-> self y-vel))) + ) + (else + (set! + (-> self y-accel) + (fmin + 4.096 + (fmax + (fmax -4.096 (+ -0.1024 (-> self y-accel))) + (* -0.0001 (-> self y-offset)) + ) + ) + ) + (set! + (-> self y-vel) + (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (-> self y-accel)))) + ) + (set! (-> self y-vel) (* 0.99 (-> self y-vel))) + ) + ) + ) + (+! (-> self y-offset) (-> self y-vel)) + (set! + (-> self root-override trans y) + (+ (-> self y-init) (-> self y-offset)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior balance-plat) rider-post) + ) + +;; definition for method 11 of type balance-plat +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! balance-plat ((obj balance-plat) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (let + ((s4-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (dummy-29 s4-0 1) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *balance-plat-sg* '()) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj y-accel) 0.0) + (set! (-> obj y-vel) 0.0) + (set! (-> obj y-offset) 0.0) + (set! (-> obj y-init) (-> obj root-override trans y)) + (set! (-> obj got-grow) #f) + (set! (-> obj y-travel) (res-lump-float arg0 'distance :default 20480.0)) + (go balance-plat-idle) + (none) + ) + +;; definition of type swamp-rock +(deftype swamp-rock (process-drawable) + ((root-override basic :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type swamp-rock +(defmethod inspect swamp-rock ((obj swamp-rock)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 291) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x12c + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-swamp-rock-explosion" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 1330 :period 1500 :length 5) + (sp-item 1331 :period 1500 :length 5) + (sp-item 1332 :period 1500 :length 15) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1331) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 130.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 54.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.1333334) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1330) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 16.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.3) 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 70.0 16.0 1.0) + (sp-rnd-flt spt-g 70.0 16.0 1.0) + (sp-flt spt-b 70.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-accel-y -10.922667) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-rnd-flt spt-conerot-x (degrees 20.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1332) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 48.0 1.0) + (sp-rnd-flt spt-b 64.0 16.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.016666668) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-flt spt-accel-y -1.0922667) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2) + (sp-int-plain-rnd spt-next-time 30 299 1) + (sp-launcher-by-id spt-next-launcher 1333) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 1333) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.2) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *swamp-rock-sg* swamp-rock + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate swamp-rock-break (swamp-rock) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play-by-name + (static-sound-name "rock-break") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-4 (method-of-type part-tracker activate))) + (t9-4 + (the-as part-tracker gp-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 291) + -1 + #f + #f + #f + (-> self root trans) + ) + (-> gp-1 ppointer) + ) + ) + (dummy-18 self) + (deactivate self) + (none) + ) + :post + (the-as (function none :behavior swamp-rock) ja-post) + ) + +;; failed to figure out what this is: +(defstate swamp-rock-idle (swamp-rock) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (go swamp-rock-break) + ) + ) + ) + ) + :code + (behavior () + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +;; definition for method 11 of type swamp-rock +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! swamp-rock ((obj swamp-rock) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask attackable) (-> obj mask))) + (let ((f30-0 (res-lump-float arg0 'scale-factor :default 1.0))) + (let + ((s4-0 + (new + 'process + 'collide-shape + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (let + ((s3-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! + (-> s3-0 local-sphere) + 0.0 + (* 4096.0 f30-0) + 0.0 + (* 4096.0 (* 3.0 f30-0)) + ) + ) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (vector-float*! (-> obj root scale) *identity-vector* f30-0) + ) + (initialize-skeleton obj *swamp-rock-sg* '()) + (nav-mesh-connect obj (-> obj root) (the-as nav-control #f)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 291) obj) + ) + (go swamp-rock-idle) + (none) + ) + +;; definition for function swamp-rock-init-by-other +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defbehavior swamp-rock-init-by-other swamp-rock ((arg0 vector)) + (set! (-> self mask) (logior (process-mask attackable) (-> self mask))) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + self + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 512)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> self root) s5-0) + ) + (set! (-> self root trans quad) (-> arg0 quad)) + (initialize-skeleton self *swamp-rock-sg* '()) + (nav-mesh-connect self (-> self root) (the-as nav-control #f)) + (set! + (-> self part) + (create-launch-control (-> *part-group-id-table* 291) self) + ) + (go swamp-rock-idle) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *tar-plat-sg* tar-plat + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 0) + ) + +;; definition for symbol *tar-plat-constants*, type rigid-body-platform-constants +(define + *tar-plat-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 2.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 60.0) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 1000.0) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 4 + :mass 1.0 + :inertial-tensor-x (meters 6.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 6.0) + :cm-joint-y (meters -2.0) + :idle-distance (meters 50.0) + :platform #t + :sound-name "tar-plat" + ) + ) + +;; definition of type tar-plat +(deftype tar-plat (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (float-height float :offset-assert 752) + ) + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f4 + :flag-assert #x23029002f4 + ) + +;; definition for method 3 of type tar-plat +(defmethod inspect tar-plat ((obj tar-plat)) + (let ((t9-0 (method-of-type rigid-body-platform inspect))) + (t9-0 obj) + ) + (format #t "~T~Tanchor-point: #~%" (-> obj anchor-point)) + (format #t "~T~Tfloat-height: ~f~%" (-> obj float-height)) + obj + ) + +;; definition for method 22 of type tar-plat +(defmethod TODO-RENAME-22 tar-plat ((obj tar-plat) (arg0 vector) (arg1 float)) + (+ + (-> obj float-height) + (-> obj float-height-offset) + (* + 512.0 + (cos + (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))) + ) + ) + ) + ) + +;; definition for method 23 of type tar-plat +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-23 tar-plat ((obj tar-plat) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method tar-plat 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 (tar-plat) + :virtual #t + :enter + (behavior () + (ja-channel-set! 0) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior tar-plat) ja-post) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-float (tar-plat) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior tar-plat) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (cond + ((or + (not *target*) + (< + (-> self info idle-distance) + (vector-vector-distance + (-> self root-overlay trans) + (-> *target* control trans) + ) + ) + ) + (let ((f30-1 -2048.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 3)) + ) + ) + (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 tar-plat) rigid-body-platform-post) + ) + +;; definition for method 30 of type tar-plat +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-30 tar-plat ((obj tar-plat)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) 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 19)) + (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) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +;; definition for method 31 of type tar-plat +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod TODO-RENAME-31 tar-plat ((obj tar-plat)) + (initialize-skeleton obj *tar-plat-sg* '()) + (TODO-RENAME-29 obj *tar-plat-constants*) + (set! (-> obj float-height) (-> obj entity extra trans y)) + (set! (-> obj float-height-offset) -2048.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 ((f26-0 (+ 8192.0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (f28-0 20480.0) + (f30-0 12288.0) + ) + (set! + (-> s3-0 local-pos x) + (fmax (fmin (* f28-0 (sin f26-0)) f30-0) (- f30-0)) + ) + (set! (-> s3-0 local-pos y) 0.0) + (set! + (-> s3-0 local-pos z) + (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0)) + ) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + 0 + (none) + ) + +;; definition of type swamp-barrel +(deftype swamp-barrel (barrel) + () + :heap-base #x90 + :method-count-assert 30 + :size-assert #x100 + :flag-assert #x1e00900100 + ) + +;; definition for method 3 of type swamp-barrel +(defmethod inspect swamp-barrel ((obj swamp-barrel)) + (let ((t9-0 (method-of-type barrel inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type swampcam +(deftype swampcam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + +;; definition for method 3 of type swampcam +(defmethod inspect swampcam ((obj swampcam)) + (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 *swampcam-sg* swampcam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 15) + :longest-edge (meters 0) + ) + +;; definition of type swamp-battlecontroller +(deftype swamp-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + +;; definition for method 3 of type swamp-battlecontroller +(defmethod inspect swamp-battlecontroller ((obj swamp-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 (swamp-battlecontroller) + :virtual #t + :code + (behavior () + (suspend) + (process-drawable-delay-player 300) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let + ((t9-2 (method-of-type pov-camera activate)) + ) + (t9-2 + (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) + *swampcam-sg* + "swamp-ambush" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate battlecontroller-die (swamp-battlecontroller) + :virtual #t + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + ((the-as + (function none :behavior battlecontroller) + (-> (method-of-type battlecontroller battlecontroller-die) code) + ) + ) + (none) + ) + ) diff --git a/test/decompiler/reference/levels/training/training-part_REF.gc b/test/decompiler/reference/levels/training/training-part_REF.gc index 5797585ad5..fb048fc64e 100644 --- a/test/decompiler/reference/levels/training/training-part_REF.gc +++ b/test/decompiler/reference/levels/training/training-part_REF.gc @@ -412,8 +412,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/village1/assistant_REF.gc b/test/decompiler/reference/levels/village1/assistant_REF.gc index b37cd60abd..922a458ab1 100644 --- a/test/decompiler/reference/levels/village1/assistant_REF.gc +++ b/test/decompiler/reference/levels/village1/assistant_REF.gc @@ -524,8 +524,8 @@ 1024 0 0 - (the-as uint 1) - (target-pos 0) + 1 + (the-as symbol (target-pos 0)) ) (let ((v1-74 (-> self skel root-channel 0))) (set! @@ -999,8 +999,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc index 7f87b43ed2..81cbda9a3f 100644 --- a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc +++ b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc @@ -723,7 +723,7 @@ 3 ((1 (meters 20)) (2 (meters 999999))) :bounds (static-spherem 0 3 0 15) - :longest-edge (meters 7.3) + :longest-edge (meters 7.300000190734863) ) ;; failed to figure out what this is: @@ -1007,8 +1007,8 @@ (the int (* 10.24 f30-0)) (the int (* 1524.0 f28-0)) 0 - (the-as uint 1) - gp-0 + 1 + (the-as symbol gp-0) ) ) ) diff --git a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc new file mode 100644 index 0000000000..0714a58874 --- /dev/null +++ b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc @@ -0,0 +1,1533 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defskelgroup *med-res-jungle-sg* medres-jungle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -80 0 -80 240) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-jungle1-sg* medres-jungle1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 30 0 -40 230) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-jungle2-sg* medres-jungle2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 90 0 130 110) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-beach-sg* medres-beach + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -140 200) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-beach1-sg* medres-beach1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -360 200) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-beach2-sg* medres-beach2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -200 0 -450 180) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-beach3-sg* medres-beach3 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 75 70 -480 100) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-misty-sg* medres-misty + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -40 0 -20 260) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-village11-sg* medres-village11 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -100 0 90 200) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-village12-sg* medres-village12 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 40 0 -50 155) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-village13-sg* medres-village13 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 180 -40 -40 180) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-training-sg* medres-training + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 -60 220) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 368) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 2.5) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-scale-x (meters 1.7)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.0020833334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.08888889) + (sp-flt spt-accel-y -0.13653333) + (sp-int spt-timer 720) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees 0.0) 3 16384.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 17.5) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 369) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 4.0)) + (sp-flt spt-scale-x (meters 0.5)) + (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 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-x (meters -0.01) (meters 0.02) 1.0) + (sp-flt spt-vel-y (meters 0.050666668)) + (sp-rnd-flt spt-vel-z (meters -0.01) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -3.0000002) (degrees 6.0000005) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.35555556) + (sp-flt spt-fade-g -0.35555556) + (sp-flt spt-fade-a 0.35555556) + (sp-int spt-timer 165) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees -45.0) 3 16384.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 370) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 5.0) + (sp-flt spt-x (meters 4.0)) + (sp-flt spt-scale-x (meters 1.7)) + (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 64.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.07666667) 1.0) + (sp-flt spt-vel-y (meters -0.006666667)) + (sp-rnd-flt spt-vel-z (meters -0.05) (meters 0.1) 1.0) + (sp-flt spt-scalevel-x (meters -0.008333334)) + (sp-rnd-flt spt-rotvel-z (degrees -3.0000002) (degrees 6.0000005) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-int-flt spt-conerot-x (degrees -45.0) 3 16384.0) + (sp-flt spt-conerot-radius (meters 10.6)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 371) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 3.8) + (sp-flt spt-x (meters 5.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 196.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.026666667) 1.0) + (sp-flt spt-vel-y (meters 0.0073333336)) + (sp-flt spt-scalevel-x (meters -0.008333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.99999994) (degrees 1.9999999) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.17777778) + (sp-flt spt-fade-a -1.0888889) + (sp-int spt-timer 165) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.3) 1.0) + (sp-end) + ) + ) + ) + +;; definition of type windmill-sail +(deftype windmill-sail (process-drawable) + ((root-override trsq :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + (alt-actor entity-actor :offset-assert 224) + (part2 sparticle-launch-control :offset-assert 228) + ) + :heap-base #x80 + :method-count-assert 20 + :size-assert #xe8 + :flag-assert #x14008000e8 + ) + +;; definition for method 3 of type windmill-sail +(defmethod inspect windmill-sail ((obj windmill-sail)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Tblade-normal: #~%" (-> obj blade-normal)) + (format #t "~T~Torig-quat: #~%" (-> obj orig-quat)) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + (format #t "~T~Tpart2: ~A~%" (-> obj part2)) + obj + ) + +;; definition for method 7 of type windmill-sail +;; INFO: Return type mismatch process-drawable vs windmill-sail. +(defmethod relocate windmill-sail ((obj windmill-sail) (arg0 int)) + (if (nonzero? (-> obj part2)) + (&+! (-> obj part2) arg0) + ) + (the-as windmill-sail ((method-of-type process-drawable relocate) obj arg0)) + ) + +;; definition for method 10 of type windmill-sail +(defmethod deactivate windmill-sail ((obj windmill-sail)) + (if (nonzero? (-> obj part2)) + (kill-and-free-particles (-> obj part2)) + ) + ((method-of-type process-drawable deactivate) obj) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup *windmill-sail-sg* windmill-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 21) + :longest-edge (meters 14.899999618530273) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 123) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-win-wind-mill" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 368 :fade-after (meters 100.0)) + (sp-item 369 :fade-after (meters 100.0)) + (sp-item 370 :fade-after (meters 200.0)) + (sp-item 371 :fade-after (meters 200.0)) + ) + :bounds (new 'static 'sphere :w 81920.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 124) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-win-wind-mill-hires" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 368) + (sp-item 369) + (sp-item 370) + (sp-item 371) + ) + :bounds (new 'static 'sphere :w 81920.0) + ) + ) + +;; failed to figure out what this is: +(defstate windmill-sail-idle (windmill-sail) + :trans + (behavior () + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((f30-0 (get-current-value (-> self sync) 65536.0))) + (set! (-> self sync period) (the-as uint 4800)) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f30-0 + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0) + ) + (spawn (if (movie?) + (-> self part2) + (-> self part) + ) + (-> self root-override trans) + ) + (if (nonzero? (-> self sound)) + (change-sound! (-> self sound) (static-sound-name "mayors-gears")) + ) + ) + (else + (set! (-> self sync period) (the-as uint #x15f90)) + (let ((f0-3 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-3 + ) + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + ) + ) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) + (logior! (-> self draw status) 64) + (set! (-> self draw status) (logand -65 (-> self draw status))) + ) + (none) + ) + :code + (the-as (function none :behavior windmill-sail) anim-loop) + :post + (the-as (function none :behavior windmill-sail) ja-post) + ) + +;; definition for method 11 of type windmill-sail +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! windmill-sail ((obj windmill-sail) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (load-params! (-> obj sync) obj (the-as uint 4800) 0.0 0.15 0.15) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *windmill-sail-sg* '()) + (quaternion-copy! (-> obj orig-quat) (-> obj root-override quat)) + (vector-x-quaternion! (-> obj blade-normal) (-> obj root-override quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 123) obj) + ) + (set! + (-> obj part2) + (create-launch-control (-> *part-group-id-table* 124) obj) + ) + (set! + (-> obj sound) + (new 'process 'ambient-sound arg0 (-> obj root-override trans)) + ) + (go windmill-sail-idle) + (none) + ) + +;; definition of type sagesail +(deftype sagesail (process-drawable) + ((root-override trsq :offset 112) + (sync sync-info :inline :offset-assert 176) + (blade-normal vector :inline :offset-assert 192) + (orig-quat quaternion :inline :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xe0 + :flag-assert #x14007000e0 + ) + +;; definition for method 3 of type sagesail +(defmethod inspect sagesail ((obj sagesail)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsync: #~%" (-> obj sync)) + (format #t "~T~Tblade-normal: #~%" (-> obj blade-normal)) + (format #t "~T~Torig-quat: #~%" (-> obj orig-quat)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *sagesail-sg* sagesail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 25.5) + :longest-edge (meters 24.200000762939453) + ) + +;; failed to figure out what this is: +(defstate sagesail-idle (sagesail) + :trans + (behavior () + (let ((f0-0 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! + (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-0 + ) + ) + (quaternion*! + (-> self root-override quat) + (-> self root-override quat) + (-> self orig-quat) + ) + (quaternion-normalize! (-> self root-override quat)) + (none) + ) + :code + (the-as (function none :behavior sagesail) anim-loop) + :post + (the-as (function none :behavior sagesail) ja-post) + ) + +;; definition for method 11 of type sagesail +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! sagesail ((obj sagesail) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (load-params! (-> obj sync) obj (the-as uint 3000) 0.0 0.15 0.15) + (set! (-> obj root-override) (new 'process 'trsq)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton obj *sagesail-sg* '()) + (quaternion-copy! (-> obj orig-quat) (-> obj root-override quat)) + (vector-z-quaternion! (-> obj blade-normal) (-> obj root-override quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (go sagesail-idle) + (none) + ) + +;; definition of type windspinner +(deftype windspinner (process-drawable) + ((blade-normal vector :inline :offset-assert 176) + (orig-quat quaternion :inline :offset-assert 192) + (angle float :offset-assert 208) + (angle-vel float :offset-assert 212) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd8 + :flag-assert #x14007000d8 + ) + +;; definition for method 3 of type windspinner +(defmethod inspect windspinner ((obj windspinner)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tblade-normal: #~%" (-> obj blade-normal)) + (format #t "~T~Torig-quat: #~%" (-> obj orig-quat)) + (format #t "~T~Tangle: ~f~%" (-> obj angle)) + (format #t "~T~Tangle-vel: ~f~%" (-> obj angle-vel)) + obj + ) + +;; definition for method 12 of type windspinner +(defmethod run-logic? windspinner ((obj windspinner)) + (or + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) 8) + (>= + (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) + (vector-vector-distance (-> obj root trans) (math-camera-pos)) + ) + ) + (and + (nonzero? (-> obj skel)) + (!= (-> obj skel root-channel 0) (-> obj skel channel)) + ) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *windspinner-sg* windspinner + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate windspinner-idle (windspinner) + :trans + (behavior () + (let* ((f0-0 0.992) + (f1-0 0.008090864) + (a0-0 (-> self root trans)) + (f0-1 + (* + f0-0 + (+ + (* + f1-0 + (-> + *wind-work* + wind-force + (logand + (+ + (the int (-> a0-0 x)) + (the int (-> a0-0 z)) + (-> *wind-work* wind-time) + ) + 63 + ) + ) + ) + (-> self angle-vel) + ) + ) + ) + ) + (if (< 291.27112 f0-1) + (set! f0-1 291.27112) + ) + (set! (-> self angle-vel) f0-1) + ) + (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) + (set! + (-> self angle) + (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0)) + ) + ) + (quaternion-axis-angle! + (-> self root quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + (-> self angle) + ) + (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root quat)) + (none) + ) + :code + (the-as (function none :behavior windspinner) anim-loop) + :post + (the-as (function none :behavior windspinner) ja-post) + ) + +;; definition for method 11 of type windspinner +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! windspinner ((obj windspinner) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj angle) 0.0) + (set! (-> obj angle-vel) 145.63556) + (set! (-> obj root) (the-as trsqv (new 'process 'trsq))) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *windspinner-sg* '()) + (set! (-> obj root pause-adjust-distance) 819200.0) + (quaternion-copy! (-> obj orig-quat) (-> obj root quat)) + (vector-y-quaternion! (-> obj blade-normal) (-> obj root quat)) + (vector-normalize! (-> obj blade-normal) 1.0) + (go windspinner-idle) + (none) + ) + +;; definition of type mayorgears +(deftype mayorgears (process-drawable) + ((alt-actor entity-actor :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + ) + +;; definition for method 3 of type mayorgears +(defmethod inspect mayorgears ((obj mayorgears)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Talt-actor: ~A~%" (-> obj alt-actor)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *mayorgears-sg* mayorgears + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4.5) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate mayorgears-idle (mayorgears) + :code + (behavior () + (while #t + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 1.0) + (joint-control-channel-group-eval! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + (else + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) 0.0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mayorgears) ja-post) + ) + +;; definition for method 11 of type mayorgears +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! mayorgears ((obj mayorgears) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *mayorgears-sg* '()) + (set! (-> obj draw shadow-mask) (the-as uint 255)) + (go mayorgears-idle) + (none) + ) + +;; definition of type reflector-middle +(deftype reflector-middle (process-drawable) + ((reflector-trans vector :inline :offset-assert 176) + (next-reflector-trans vector :inline :offset-assert 192) + ) + :heap-base #x60 + :method-count-assert 20 + :size-assert #xd0 + :flag-assert #x14006000d0 + ) + +;; definition for method 3 of type reflector-middle +(defmethod inspect reflector-middle ((obj reflector-middle)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Treflector-trans: ~`vector`P~%" (-> obj reflector-trans)) + (format + #t + "~T~Tnext-reflector-trans: ~`vector`P~%" + (-> obj next-reflector-trans) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *reflector-middle-sg* reflector-middle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 17 0 17) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate reflector-middle-idle (reflector-middle) + :trans + (behavior () + (when (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status complete) #t) + (draw-eco-beam (-> self reflector-trans) (-> self next-reflector-trans)) + ) + (none) + ) + :code + (the-as (function none :behavior reflector-middle) anim-loop) + :post + (the-as (function none :behavior reflector-middle) ja-post) + ) + +;; definition for method 11 of type reflector-middle +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defmethod + copy-defaults! + reflector-middle + ((obj reflector-middle) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *reflector-middle-sg* '()) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (set! (-> obj reflector-trans quad) (-> obj root trans quad)) + (+! (-> obj reflector-trans y) (res-lump-float arg0 'height-info)) + (let ((a0-10 (-> obj link next))) + (when a0-10 + (set! (-> obj next-reflector-trans quad) (-> a0-10 extra trans quad)) + (+! (-> obj next-reflector-trans y) (res-lump-float a0-10 'height-info)) + ) + ) + (logior! (-> obj draw status) 64) + (go reflector-middle-idle) + (none) + ) + +;; definition of type reflector-end +(deftype reflector-end (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type reflector-end +(defmethod inspect reflector-end ((obj reflector-end)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate reflector-end-idle (reflector-end) + :code + (the-as (function none :behavior reflector-end) anim-loop) + ) + +;; definition for method 11 of type reflector-end +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! reflector-end ((obj reflector-end) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (go reflector-end-idle) + (none) + ) + +;; definition of type villa-starfish +(deftype villa-starfish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + +;; definition for method 3 of type villa-starfish +(defmethod inspect villa-starfish ((obj villa-starfish)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tchild-count: ~D~%" (-> obj child-count)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *starfish-sg* villa-starfish + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 0) + ) + +;; definition of type starfish +(deftype starfish (nav-enemy) + () + :heap-base #x120 + :method-count-assert 76 + :size-assert #x190 + :flag-assert #x4c01200190 + ) + +;; definition for method 3 of type starfish +(defmethod inspect starfish ((obj starfish)) + (let ((t9-0 (method-of-type nav-enemy inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate starfish-idle (starfish) + :enter + (behavior () + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (ja-channel-set! 0) + (none) + ) + :exit + (behavior () + (ja-channel-set! 1) + (none) + ) + :trans + (behavior () + (if + (and + *target* + (>= + 163840.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (go starfish-patrol) + ) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior starfish) ja-post) + ) + +;; failed to figure out what this is: +(defstate starfish-patrol (starfish) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self nav flags) + (logior (nav-control-flags bit19) (-> self nav flags)) + ) + (none) + ) + :trans + (behavior () + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (if + (or + (not *target*) + (< + 204800.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (go starfish-idle) + ) + ) + (none) + ) + :code + (behavior () + (set! (-> self target-speed) 4096.0) + (set! (-> self rotate-speed) 12743.111) + (set! (-> self turn-time) 150) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + 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 2)) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior starfish) nav-enemy-patrol-post) + ) + +;; definition for symbol *starfish-nav-enemy-info*, type nav-enemy-info +(define + *starfish-nav-enemy-info* + (new 'static 'nav-enemy-info + :idle-anim -1 + :walk-anim -1 + :turn-anim -1 + :notice-anim -1 + :run-anim -1 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim -1 + :taunt-anim -1 + :die-anim -1 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 1.0) + :run-rotate-speed (degrees 70.0) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.5) + :walk-travel-speed (meters 1.0) + :walk-rotate-speed (degrees 70.0) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 30.0) + :stop-chase-distance (meters 40.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1.0) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) + +;; definition for method 47 of type starfish +;; INFO: Return type mismatch int vs none. +(defmethod initialize-collision starfish ((obj starfish)) + (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) + (let + ((s5-0 + (new + 'process + 'collide-shape-moving + obj + (collide-list-enum usually-hit-by-player) + ) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) nothing) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core offense) 2) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj collide-info) s5-0) + ) + 0 + (none) + ) + +;; definition for method 48 of type starfish +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-48 starfish ((obj starfish)) + (initialize-skeleton obj *starfish-sg* '()) + (TODO-RENAME-45 obj *starfish-nav-enemy-info*) + 0 + (none) + ) + +;; definition for function starfish-init-by-other +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defbehavior starfish-init-by-other starfish ((arg0 starfish) (arg1 vector)) + (initialize-collision self) + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self collide-info trans quad) (-> arg1 quad)) + (quaternion-copy! (-> self collide-info quat) (-> arg0 collide-info quat)) + (vector-identity! (-> self collide-info scale)) + (set! (-> self entity) (-> arg0 entity)) + (TODO-RENAME-48 self) + (go starfish-idle) + (none) + ) + +;; definition for function process-drawable-child-count +(defbehavior process-drawable-child-count process-drawable () + (let ((v0-0 0)) + (let ((v1-0 (-> self child))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 0 brother)) + (nop!) + (nop!) + ) + ) + v0-0 + ) + ) + +;; definition for function starfish-spawn-child +;; INFO: Return type mismatch (pointer process) vs (pointer starfish). +;; Used lq/sq +(defbehavior starfish-spawn-child starfish () + (let ((gp-0 (new-stack-vector0))) + (get-random-point (-> self path) gp-0) + (let ((s5-0 (get-process *default-dead-pool* starfish #x4000))) + (the-as (pointer starfish) (when s5-0 + (let ((t9-2 (method-of-type starfish activate))) + (t9-2 + (the-as starfish s5-0) + self + 'starfish + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-0 + starfish-init-by-other + self + gp-0 + ) + (-> s5-0 ppointer) + ) + ) + ) + ) + ) + +;; failed to figure out what this is: +(defstate villa-starfish-idle (villa-starfish) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (if + (and + (and + *target* + (>= + 204800.0 + (vector-vector-distance + (-> self root trans) + (-> *target* control trans) + ) + ) + ) + (< (process-drawable-child-count) (-> self child-count)) + ) + (starfish-spawn-child) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior villa-starfish) #f) + ) + +;; definition for method 11 of type villa-starfish +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! villa-starfish ((obj villa-starfish) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (let + ((a1-4 + (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)) + ) + ) + (set! (-> obj child-count) (max 1 (min 8 (the-as int a1-4)))) + ) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) + (go villa-starfish-idle) + (none) + ) + +;; definition of type village-fish +(deftype village-fish (process-drawable) + ((child-count int8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + +;; definition for method 3 of type village-fish +(defmethod inspect village-fish ((obj village-fish)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tchild-count: ~D~%" (-> obj child-count)) + obj + ) + +;; failed to figure out what this is: +(defstate village-fish-idle (village-fish) + :code + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior village-fish) #f) + ) + +;; definition for method 11 of type village-fish +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! village-fish ((obj village-fish) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (go village-fish-idle) + (none) + ) + +;; definition of type villa-fisha +(deftype villa-fisha (village-fish) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + +;; definition for method 3 of type villa-fisha +(defmethod inspect villa-fisha ((obj villa-fisha)) + (let ((t9-0 (method-of-type village-fish inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type villa-fishb +(deftype villa-fishb (village-fish) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + +;; definition for method 3 of type villa-fishb +(defmethod inspect villa-fishb ((obj villa-fishb)) + (let ((t9-0 (method-of-type village-fish inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type cyclegen +(deftype cyclegen (structure) + ((output float :offset-assert 0) + (inc float :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +;; definition for method 3 of type cyclegen +(defmethod inspect cyclegen ((obj cyclegen)) + (format #t "[~8x] ~A~%" obj 'cyclegen) + (format #t "~Toutput: ~f~%" (-> obj output)) + (format #t "~Tinc: ~f~%" (-> obj inc)) + obj + ) + +;; definition for function set-period +(defun set-period ((arg0 cyclegen) (arg1 int)) + (let ((f0-1 (/ 5.0 (the float arg1)))) + (set! (-> arg0 inc) f0-1) + f0-1 + ) + ) + +;; definition for function update-clock +(defun update-clock ((arg0 cyclegen)) + (let + ((f0-1 + (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))) + ) + ) + (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) + ) + (-> arg0 output) + ) + +;; definition of type hutlamp +(deftype hutlamp (process-drawable) + ((pivot joint-mod-set-local :offset-assert 176) + (clock cyclegen :inline :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbc + :flag-assert #x14005000bc + ) + +;; definition for method 3 of type hutlamp +(defmethod inspect hutlamp ((obj hutlamp)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tpivot: ~A~%" (-> obj pivot)) + (format #t "~T~Tclock: #~%" (-> obj clock)) + obj + ) + +;; definition for method 7 of type hutlamp +;; INFO: Return type mismatch process-drawable vs hutlamp. +(defmethod relocate hutlamp ((obj hutlamp) (arg0 int)) + (if (nonzero? (-> obj pivot)) + (&+! (-> obj pivot) arg0) + ) + (the-as + hutlamp + ((the-as + (function process-drawable int process-drawable) + (find-parent-method hutlamp 7) + ) + obj + arg0 + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *hutlamp-sg* hutlamp + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 1.2000000476837158) + :longest-edge (meters 0.699999988079071) + ) + +;; failed to figure out what this is: +(defstate hutlamp-idle (hutlamp) + :code + (behavior () + (while #t + (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) + (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior hutlamp) ja-post) + ) + +;; definition for method 11 of type hutlamp +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! hutlamp ((obj hutlamp) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *hutlamp-sg* '()) + (set! (-> obj pivot) (new 'process 'joint-mod-set-local obj 3 #f #t #f)) + (set-period (-> obj clock) 900) + (set! (-> obj clock output) (rand-vu)) + (go hutlamp-idle) + (none) + ) + +;; definition of type revcycleprop +(deftype revcycleprop (process-drawable) + () + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type revcycleprop +(defmethod inspect revcycleprop ((obj revcycleprop)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *revcycleprop-sg* revcycleprop + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2.200000047683716) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate idle (revcycleprop) + :virtual #t + :code + (the-as (function none :behavior revcycleprop) anim-loop) + :post + (the-as (function none :behavior revcycleprop) ja-post) + ) + +;; definition for method 11 of type revcycleprop +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! revcycleprop ((obj revcycleprop) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *revcycleprop-sg* '()) + (set! (-> obj draw light-index) (the-as uint 1)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type revcycle +(deftype revcycle (process-drawable) + () + :heap-base #x40 + :method-count-assert 21 + :size-assert #xb0 + :flag-assert #x15004000b0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type revcycle +(defmethod inspect revcycle ((obj revcycle)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *revcycle-sg* revcycle + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.200000047683716) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate idle (revcycle) + :virtual #t + :code + (the-as (function none :behavior revcycle) anim-loop) + :post + (the-as (function none :behavior revcycle) ja-post) + ) + +;; definition for method 11 of type revcycle +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! revcycle ((obj revcycle) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *revcycle-sg* '()) + (set! (-> obj draw light-index) (the-as uint 1)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type villagea-water +(deftype villagea-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + +;; definition for method 3 of type villagea-water +(defmethod inspect villagea-water ((obj villagea-water)) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for symbol ripple-for-villagea-water, type ripple-wave-set +(define + ripple-for-villagea-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 4.0 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 10.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 10.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 5.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 22 of type villagea-water +(defmethod TODO-RENAME-22 villagea-water ((obj villagea-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-villagea-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) diff --git a/test/decompiler/reference/levels/village1/village1-part2_REF.gc b/test/decompiler/reference/levels/village1/village1-part2_REF.gc index 66b59b42b7..c0e0796414 100644 --- a/test/decompiler/reference/levels/village1/village1-part2_REF.gc +++ b/test/decompiler/reference/levels/village1/village1-part2_REF.gc @@ -1853,8 +1853,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/village1/yakow_REF.gc b/test/decompiler/reference/levels/village1/yakow_REF.gc index 1cf3c16ba4..eebe175223 100644 --- a/test/decompiler/reference/levels/village1/yakow_REF.gc +++ b/test/decompiler/reference/levels/village1/yakow_REF.gc @@ -207,8 +207,8 @@ 0 4 ((1 (meters 20)) (2 (meters 999999))) - :bounds (static-spherem 0 2.5 0 4.4) - :longest-edge (meters 1.3) + :bounds (static-spherem 0 2.5 0 4.400000095367432) + :longest-edge (meters 1.2999999523162842) :shadow 3 ) diff --git a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc index ddadcf29df..f9b80c1146 100644 --- a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc +++ b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc @@ -1324,8 +1324,8 @@ 1024 0 0 - (the-as uint 1) - (target-pos 0) + 1 + (the-as symbol (target-pos 0)) ) (let ((a0-27 (-> self skel root-channel 0))) (set! @@ -1763,8 +1763,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc b/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc index 49e9d7c9db..919cfa2adc 100644 --- a/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc +++ b/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc @@ -33,7 +33,7 @@ 0 2 ((1 (meters 999999))) - :bounds (static-spherem 0 -1 0 6.6) + :bounds (static-spherem 0 -1 0 6.599999904632568) :longest-edge (meters 0) ) diff --git a/test/decompiler/reference/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/levels/village2/village2-obs_REF.gc new file mode 100644 index 0000000000..e5a032f8cd --- /dev/null +++ b/test/decompiler/reference/levels/village2/village2-obs_REF.gc @@ -0,0 +1,2809 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type village2cam +(deftype village2cam (pov-camera) + ((seq uint64 :offset-assert 224) + ) + :heap-base #x80 + :method-count-assert 30 + :size-assert #xe8 + :flag-assert #x1e008000e8 + ) + +;; definition for method 3 of type village2cam +(defmethod inspect village2cam ((obj village2cam)) + (let ((t9-0 (method-of-type pov-camera inspect))) + (t9-0 obj) + ) + (format #t "~T~Tseq: ~D~%" (-> obj seq)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *village2cam-sg* village2cam + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 0) + ) + +;; definition for method 29 of type village2cam +(defmethod set-stack-size! village2cam ((obj village2cam)) + (stack-size-set! (-> obj main-thread) 512) + (none) + ) + +;; failed to figure out what this is: +(defstate pov-camera-playing (village2cam) + :virtual #t + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> a0-0 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + 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 2)) + 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! + ) + ) + ) + ) + ((= v1-0 1) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-4 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! + a0-4 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! + (-> a0-5 param 0) + (the float (+ (-> a0-5 frame-group data 0 length) -1)) + ) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group-eval! + a0-5 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((= v1-0 2) + (pov-camera-play-and-reposition + (the-as joint-anim-compressed (-> self draw art-group data 4)) + (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) + 1.0 + ) + ) + (else + (suspend) + 0 + ) + ) + ) + (go-virtual pov-camera-done-playing) + (none) + ) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-rolling-sg* medres-rolling + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -520 110 70 100) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-rolling1-sg* medres-rolling1 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -300 30 -20 120) + :longest-edge (meters 0.009999999776482582) + ) + +;; failed to figure out what this is: +(defskelgroup *med-res-village2-sg* medres-village2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -60 65 0 90) + :longest-edge (meters 0.009999999776482582) + ) + +;; definition of type pontoon +(deftype pontoon (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + (task uint8 :offset-assert 752) + (alt-task uint8 :offset-assert 753) + ) + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + +;; definition for method 3 of type pontoon +(defmethod inspect pontoon ((obj pontoon)) + (let ((t9-0 (method-of-type rigid-body-platform inspect))) + (t9-0 obj) + ) + (format #t "~T~Tanchor-point: #~%" (-> obj anchor-point)) + (format #t "~T~Ttask: ~D~%" (-> obj task)) + (format #t "~T~Talt-task: ~D~%" (-> obj alt-task)) + obj + ) + +;; failed to figure out what this is: +(defstate pontoon-hidden (pontoon) + :enter + (behavior () + (logior! (-> self draw status) 2) + (dummy-48 (-> self root-overlay)) + (none) + ) + :exit + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (dummy-49 (-> self root-overlay)) + (none) + ) + :trans + (behavior () + (if + (task-closed? + (the-as game-task (-> self task)) + (task-status need-resolution) + ) + (go-virtual rigid-body-platform-idle) + ) + (none) + ) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate pontoon-die (pontoon) + :code + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-float (pontoon) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'die) + (dummy-18 self) + (deactivate self) + ) + (else + (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + ) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-idle (pontoon) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'die) + (dummy-18 self) + (deactivate self) + ) + ) + ) + ) + ) + +;; definition for method 11 of type pontoon +;; INFO: Return type mismatch int vs none. +(defmethod copy-defaults! pontoon ((obj pontoon) (arg0 res-lump)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (TODO-RENAME-30 obj) + (process-drawable-from-entity! obj arg0) + (TODO-RENAME-31 obj) + (set! (-> obj water-anim) #f) + (set! (-> obj root-overlay pause-adjust-distance) -122880.0) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (set! (-> obj alt-task) (res-lump-value arg0 'alt-task uint)) + (cond + ((and + (nonzero? (-> obj alt-task)) + (task-closed? + (the-as game-task (-> obj alt-task)) + (task-status need-resolution) + ) + ) + (go pontoon-die) + ) + ((zero? (-> obj task)) + (go (method-of-object obj rigid-body-platform-idle)) + ) + ((task-closed? + (the-as game-task (-> obj task)) + (task-status need-resolution) + ) + (go (method-of-object obj rigid-body-platform-idle)) + ) + (else + (go pontoon-hidden) + ) + ) + 0 + (none) + ) + +;; definition for method 23 of type pontoon +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-23 pontoon ((obj pontoon) (arg0 float)) + ((the-as + (function rigid-body-platform basic none) + (find-parent-method pontoon 23) + ) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +;; definition for symbol *pontoonfive-constants*, type rigid-body-platform-constants +(define + *pontoonfive-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.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 0.98 + :angular-damping 0.98 + :control-point-count 4 + :mass 2.0 + :inertial-tensor-x (meters 2.5) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90.0) + :platform #t + :sound-name "pontoonten" + ) + ) + +;; definition for symbol *pontoonten-constants*, type rigid-body-platform-constants +(define + *pontoonten-constants* + (new 'static 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.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 0.98 + :angular-damping 0.95 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 5.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90.0) + :platform #t + :sound-name "pontoonten" + ) + ) + +;; definition of type pontoonfive +(deftype pontoonfive (pontoon) + () + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + +;; definition for method 3 of type pontoonfive +(defmethod inspect pontoonfive ((obj pontoonfive)) + (let ((t9-0 (method-of-type pontoon inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type pontoonten +(deftype pontoonten (pontoon) + () + :heap-base #x290 + :method-count-assert 35 + :size-assert #x2f2 + :flag-assert #x23029002f2 + ) + +;; definition for method 3 of type pontoonten +(defmethod inspect pontoonten ((obj pontoonten)) + (let ((t9-0 (method-of-type pontoon inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *pontoonfive-sg* pontoonfive + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :longest-edge (meters 3.5) + ) + +;; failed to figure out what this is: +(defskelgroup *pontoonten-sg* pontoonten + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 4) + ) + +;; definition for method 30 of type pontoonfive +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-30 pontoonfive ((obj pontoonfive)) + (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) 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 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +;; definition for method 31 of type pontoonfive +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod TODO-RENAME-31 pontoonfive ((obj pontoonfive)) + (initialize-skeleton obj *pontoonfive-sg* '()) + (TODO-RENAME-29 obj *pontoonfive-constants*) + (set! (-> obj float-height-offset) 6144.0) + (set! (-> obj root-overlay nav-radius) 12288.0) + (let ((v1-6 (-> obj control-point-array data))) + (set! (-> v1-6 0 local-pos x) 9216.0) + (set! (-> v1-6 0 local-pos y) 0.0) + (set! (-> v1-6 0 local-pos z) 12083.2) + (set! (-> v1-6 0 local-pos w) 1.0) + ) + (let ((v1-8 (-> obj control-point-array data 1))) + (set! (-> v1-8 local-pos x) 9216.0) + (set! (-> v1-8 local-pos y) 0.0) + (set! (-> v1-8 local-pos z) -12083.2) + (set! (-> v1-8 local-pos w) 1.0) + ) + (let ((v1-10 (-> obj control-point-array data 2))) + (set! (-> v1-10 local-pos x) -9216.0) + (set! (-> v1-10 local-pos y) 0.0) + (set! (-> v1-10 local-pos z) -12083.2) + (set! (-> v1-10 local-pos w) 1.0) + ) + (let ((v1-12 (-> obj control-point-array data 3))) + (set! (-> v1-12 local-pos x) -9216.0) + (set! (-> v1-12 local-pos y) 0.0) + (set! (-> v1-12 local-pos z) 12083.2) + (set! (-> v1-12 local-pos w) 1.0) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + 0 + (none) + ) + +;; definition for method 30 of type pontoonten +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-30 pontoonten ((obj pontoonten)) + (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) 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 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) + ) + (dummy-46 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (dummy-50 s5-0) + (set! (-> obj root-overlay) s5-0) + ) + 0 + (none) + ) + +;; definition for method 31 of type pontoonten +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod TODO-RENAME-31 pontoonten ((obj pontoonten)) + (initialize-skeleton obj *pontoonten-sg* '()) + (TODO-RENAME-29 obj *pontoonten-constants*) + (set! (-> obj float-height-offset) 6144.0) + (set! (-> obj root-overlay nav-radius) 20480.0) + (let ((v1-6 (-> obj control-point-array data))) + (set! (-> v1-6 0 local-pos x) 17408.0) + (set! (-> v1-6 0 local-pos y) 0.0) + (set! (-> v1-6 0 local-pos z) 10035.2) + (set! (-> v1-6 0 local-pos w) 1.0) + ) + (let ((v1-8 (-> obj control-point-array data 1))) + (set! (-> v1-8 local-pos x) 17408.0) + (set! (-> v1-8 local-pos y) 0.0) + (set! (-> v1-8 local-pos z) -10035.2) + (set! (-> v1-8 local-pos w) 1.0) + ) + (let ((v1-10 (-> obj control-point-array data 2))) + (set! (-> v1-10 local-pos x) -17408.0) + (set! (-> v1-10 local-pos y) 0.0) + (set! (-> v1-10 local-pos z) -10035.2) + (set! (-> v1-10 local-pos w) 1.0) + ) + (let ((v1-12 (-> obj control-point-array data 3))) + (set! (-> v1-12 local-pos x) -17408.0) + (set! (-> v1-12 local-pos y) 0.0) + (set! (-> v1-12 local-pos z) 10035.2) + (set! (-> v1-12 local-pos w) 1.0) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + (nav-mesh-connect obj (-> obj root-overlay) (the-as nav-control #f)) + 0 + (none) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 563) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-allpontoons-trail" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2841 :flags (is-3d) :period 900 :length 5) + (sp-item 2842 :flags (is-3d) :period 900 :length 5) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2841) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 9.0) 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.001) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2843) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2843) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.094814815) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2842) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 8.0) (meters 8.0) 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.001) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2843) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; definition of type allpontoons +(deftype allpontoons (process-drawable) + ((task uint8 :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14005000b1 + ) + +;; definition for method 3 of type allpontoons +(defmethod inspect allpontoons ((obj allpontoons)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Ttask: ~D~%" (-> obj task)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *allpontoons-sg* allpontoons + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 32 0 -5 34) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate allpontoons-be-clone (allpontoons) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'end-mode) + (dummy-18 self) + (deactivate self) + ) + ) + ) + ) + :enter + (behavior ((arg0 handle)) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) + :trans + (behavior () + (when (>= (ja-aframe-num 0) 500.0) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 7)) + ) + (spawn + (-> self part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)) + ) + ) + (none) + ) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate allpontoons-idle (allpontoons) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('clone) + (go allpontoons-be-clone (the-as handle (-> arg3 param 0))) + ) + ) + ) + :enter + (behavior () + (logior! (-> self draw status) 2) + (none) + ) + :code + (behavior () + (while #t + (when + (and + (nonzero? (-> self task)) + (task-closed? + (the-as game-task (-> self task)) + (task-status need-resolution) + ) + ) + (dummy-18 self) + (deactivate self) + ) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) + ) + ) + +;; definition for method 11 of type allpontoons +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! allpontoons ((obj allpontoons) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *allpontoons-sg* '()) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 563) obj) + ) + (go allpontoons-idle) + (none) + ) + +;; definition of type fireboulder +(deftype fireboulder (process-drawable) + ((root-override collide-shape :offset 112) + (tracker handle :offset-assert 176) + (task uint8 :offset-assert 184) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb9 + :flag-assert #x14005000b9 + ) + +;; definition for method 3 of type fireboulder +(defmethod inspect fireboulder ((obj fireboulder)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Ttracker: ~D~%" (-> obj tracker)) + (format #t "~T~Ttask: ~D~%" (-> obj task)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *fireboulder-sg* fireboulder + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3.5 0 6) + :longest-edge (meters 3.5) + ) + +;; definition for function fireboulder-disable-blocking-collision +;; INFO: Return type mismatch int vs none. +(defbehavior fireboulder-disable-blocking-collision fireboulder () + (let ((v1-1 (-> self root-override root-prim))) + (dotimes (a0-0 (-> (the-as collide-shape-prim-group v1-1) num-prims)) + (let ((a1-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-0))) + (when (= (-> a1-2 prim-id) 256) + (set! (-> a1-2 prim-core collide-as) (the-as uint 0)) + (set! (-> a1-2 collide-with) (the-as uint 0)) + 0 + ) + ) + ) + (set! (-> v1-1 local-sphere x) 0.0) + (set! (-> v1-1 local-sphere w) 24576.0) + ) + 0 + (none) + ) + +;; definition for function fireboulder-hover-stuff +;; Used lq/sq +(defbehavior fireboulder-hover-stuff fireboulder () + (local-vars (v0-1 object)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> self node-list data 4)) + (cond + ((handle->process (-> self tracker)) + (let + ((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0))) + (set! (-> v1-6 start-time) (-> *display* base-frame-counter)) + (set! v0-1 (-> v1-6 root trans)) + ) + (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad)) + ) + (else + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (set! v0-1 (ppointer->handle (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 + (-> *part-group-id-table* 678) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + ) + ) + (set! (-> self tracker) (the-as handle v0-1)) + ) + ) + ) + v0-1 + ) + +;; failed to figure out what this is: +(defstate fireboulder-hover (fireboulder) + :enter + (behavior () + (fireboulder-disable-blocking-collision) + (ja-channel-set! 1) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + ) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (set! (-> self root-override trans quad) (-> self entity extra trans quad)) + (vector-reset! (-> self draw origin)) + (logior! (-> self skel status) 1) + (ja-post) + (set! (-> self skel status) (logand -2 (-> self skel status))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> self node-list data 4)) + (vector-! (-> self draw bounds) gp-0 (-> self root-override trans)) + ) + (set! (-> self draw bounds w) 24576.0) + (none) + ) + :exit + (behavior () + (stop! (-> self sound)) + (none) + ) + :trans + (behavior () + (fireboulder-hover-stuff) + (update! (-> self sound)) + (none) + ) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (quaternion-rotate-y! + (-> self root-override quat) + (-> self root-override quat) + (* 455.1111 (-> *display* time-adjust-ratio)) + ) + (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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior fireboulder) transform-post) + ) + +;; failed to figure out what this is: +(defstate fireboulder-be-clone (fireboulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop-cloning) + (go fireboulder-hover) + ) + ) + ) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self skel status) (logand -33 (-> self skel status))) + (none) + ) + :trans + (the-as (function none :behavior fireboulder) fireboulder-hover-stuff) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (format 0 "ERROR: fireboulder-be-clone ended~%") + (dummy-18 self) + (deactivate self) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate fireboulder-idle (fireboulder) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('clone) + (go fireboulder-be-clone (the-as handle (-> arg3 param 0))) + ) + ) + ) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self tracker)))) + (if a0-1 + (deactivate a0-1) + ) + ) + (none) + ) + :code + (behavior () + (transform-post) + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (cond + ((zero? (-> self task)) + ) + ((handle->process (-> self tracker)) + (set! + (-> + (the-as (pointer part-tracker) (-> self tracker process)) + 0 + start-time + ) + (-> *display* base-frame-counter) + ) + ) + (else + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (set! (-> self tracker) (ppointer->handle (when gp-0 + (let + ((t9-3 + (method-of-type + part-tracker + activate + ) + ) + ) + (t9-3 + (the-as part-tracker gp-0) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> + *part-group-id-table* + 271 + ) + -1 + #f + #f + #f + (-> + self + root-override + trans + ) + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + ) + ) + (suspend) + (let ((a0-14 (-> self skel root-channel 0))) + (set! + (-> a0-14 param 0) + (the float (+ (-> a0-14 frame-group data 0 length) -1)) + ) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! + a0-14 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior fireboulder) ja-post) + ) + +;; definition for method 11 of type fireboulder +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! fireboulder ((obj fireboulder) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) + (dummy-46 s4-0) + (let + ((s2-0 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + ) + (dummy-28 s3-0) + (let + ((s2-1 + (new + 'process + 'collide-shape-prim-mesh + s4-0 + (the-as uint 1) + (the-as uint 256) + ) + ) + ) + (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (cond + ((name= (-> obj name) "fireboulder-6") + (quaternion-axis-angle! (-> obj root-override quat) 0.0 1.0 0.0 16384.0) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "rock-hover") + :volume #x400 + :fo-max 30 + ) + (-> obj root-override trans) + ) + ) + ) + (else + (fireboulder-disable-blocking-collision) + ) + ) + (initialize-skeleton obj *fireboulder-sg* '()) + (set! (-> obj tracker) (the-as handle #f)) + (set-vector! (-> obj draw color-emissive) 0.125 0.0625 0.0 0.0) + (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) + (cond + ((zero? (-> obj task)) + (go fireboulder-idle) + ) + ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) + (go fireboulder-hover) + ) + (else + (go fireboulder-idle) + ) + ) + (none) + ) + +;; definition of type ceilingflag +(deftype ceilingflag (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + ) + +;; definition for method 3 of type ceilingflag +(defmethod inspect ceilingflag ((obj ceilingflag)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *ceilingflag-sg* ceilingflag + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -4 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate ceilingflag-idle (ceilingflag) + :code + (behavior () + (while #t + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! + (-> a0-0 param 0) + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (if (> (-> self skel active-channels) 0) + (-> + self + skel + root-channel + 0 + frame-group + ) + ) + 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! + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior ceilingflag) ja-post) + ) + +;; definition for method 11 of type ceilingflag +;; INFO: Return type mismatch object vs none. +(defmethod copy-defaults! ceilingflag ((obj ceilingflag) (arg0 res-lump)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ceilingflag-sg* '()) + (go ceilingflag-idle) + (none) + ) + +;; definition of type exit-chamber-dummy +(deftype exit-chamber-dummy (process-drawable) + ((orig-trans vector :inline :offset-assert 176) + (fcell-handle handle :offset-assert 192) + ) + :heap-base #x60 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15006000c8 + (:methods + (skip-reminder? (_type_) symbol 20) + ) + ) + +;; definition for method 3 of type exit-chamber-dummy +(defmethod inspect exit-chamber-dummy ((obj exit-chamber-dummy)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Torig-trans: #~%" (-> obj orig-trans)) + (format #t "~T~Tfcell-handle: ~D~%" (-> obj fcell-handle)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *exit-chamber-dummy-sg* exit-chamber-dummy + 0 + -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 5 0 15) + :longest-edge (meters 0) + ) + +;; definition for method 20 of type exit-chamber-dummy +(defmethod skip-reminder? exit-chamber-dummy ((obj exit-chamber-dummy)) + (case (get-reminder (get-task-control (game-task sunken-room)) 0) + ((2) + (let ((v1-4 (level-get *level* 'sunken))) + (if (or (not v1-4) (!= (-> v1-4 status) 'active)) + (return #t) + ) + ) + ) + ) + #f + ) + +;; failed to figure out what this is: +(defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) + :code + (behavior () + (logior! (-> self draw status) 2) + (while (not (skip-reminder? self)) + (suspend) + ) + (when + (and + (not (task-complete? *game-info* (game-task sunken-room))) + (not (-> self child)) + ) + (let ((a0-3 (new 'stack-no-clear 'vector))) + (set! (-> a0-3 quad) (-> self root trans quad)) + (set! (-> a0-3 y) (+ 67584.0 (-> a0-3 y))) + (let + ((v1-12 (birth-pickup-at-point a0-3 6 47.0 #f self (the-as fact-info #f))) + ) + (set! (-> self fcell-handle) (ppointer->handle v1-12)) + (send-event (ppointer->process v1-12) 'collide-shape #f) + ) + ) + ) + (go exit-chamber-dummy-idle) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate exit-chamber-dummy-idle (exit-chamber-dummy) + :code + (behavior () + (set! (-> self draw status) (logand -3 (-> self draw status))) + (let ((gp-0 0)) + (while (< gp-0 2) + (if (skip-reminder? self) + (set! gp-0 0) + (+! gp-0 1) + ) + (set! + (-> self root trans y) + (+ + (-> self orig-trans y) + (* + 2252.8 + (cos + (* 36.40889 (the float (mod (-> *display* base-frame-counter) 1800))) + ) + ) + ) + ) + (let ((a0-7 (handle->process (-> self fcell-handle)))) + (when a0-7 + (let ((v1-14 (new 'stack-no-clear 'vector))) + (set! (-> v1-14 quad) (-> self root trans quad)) + (set! (-> v1-14 y) (+ 67584.0 (-> v1-14 y))) + (send-event a0-7 'trans v1-14) + ) + ) + ) + (suspend) + ) + ) + (let ((a0-11 (handle->process (-> self fcell-handle)))) + (if a0-11 + (deactivate a0-11) + ) + ) + (go exit-chamber-dummy-wait-to-appear) + (none) + ) + :post + (the-as (function none :behavior exit-chamber-dummy) ja-post) + ) + +;; definition for method 11 of type exit-chamber-dummy +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defmethod + copy-defaults! + exit-chamber-dummy + ((obj exit-chamber-dummy) (arg0 res-lump)) + (set! (-> obj fcell-handle) (the-as handle #f)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj root trans y) (+ 24576.0 (-> obj root trans y))) + (set! (-> obj orig-trans quad) (-> obj root trans quad)) + (initialize-skeleton obj *exit-chamber-dummy-sg* '()) + (ja-channel-set! 1) + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) + ) + (logior! (-> obj draw status) 2) + (go exit-chamber-dummy-wait-to-appear) + (none) + ) + +;; definition of type ogreboss-village2 +(deftype ogreboss-village2 (process-drawable) + ((boulder handle :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + +;; definition for method 3 of type ogreboss-village2 +(defmethod inspect ogreboss-village2 ((obj ogreboss-village2)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tboulder: ~D~%" (-> obj boulder)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *ogreboss-village2-sg* ogreboss-village2 + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 10 0 15) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 564) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-trail" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 2319 :fade-after (meters 200.0) :falloff-to (meters 200.0)) + (sp-item 2320 :fade-after (meters 200.0) :falloff-to (meters 200.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2320) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (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 8.0) (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 128.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.00083333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-rnd-flt spt-rotvel-z (degrees -1.9999999) (degrees 3.9999998) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.21333334) + (sp-flt spt-fade-g -0.10666667) + (sp-flt spt-fade-b 0.10666667) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.027306668) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2319) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (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 8.0) (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 128.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 80.0 80.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.00083333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-rnd-flt spt-rotvel-z (degrees -1.9999999) (degrees 3.9999998) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.53333336) + (sp-flt spt-fade-b -0.17777778) + (sp-flt spt-fade-a -1.0666667) + (sp-flt spt-accel-y -0.027306668) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 551) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-hit-wall" + :launcher + (new 'static 'inline-array sparticle-group-item 1 + (sp-item 2287 :period 900 :length 40) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2287) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 10.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.4)) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-group-id-table* 552) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ogreboulder-splash" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2288 :period 900 :length 20) + (sp-item 2321 :flags (is-3d) :period 900 :length 10) + (sp-item 2322 :flags (is-3d) :period 900 :length 10) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2321) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 9.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 16.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2323) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2323) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -0.094814815) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2322) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters 8.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 4.5) (meters 3.5) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.02) (meters 0.013333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 3.2) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 10 29 1) + (sp-launcher-by-id spt-next-launcher 2323) + (sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! + (-> *part-id-table* 2288) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 12.0) (meters 6.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 50.0) + (sp-rnd-flt spt-g 80.0 64.0 1.0) + (sp-flt spt-b 200.0) + (sp-rnd-flt spt-a 48.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.026666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 2.048 2.048 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 660) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 90.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 8.0) 1.0) + (sp-end) + ) + ) + ) + +;; definition for function ogreboss-village2-trans +(defbehavior ogreboss-village2-trans ogreboss-village2 () + (when + (= (get-task-status (game-task village2-levitator)) (task-status invalid)) + (dummy-18 self) + (deactivate self) + ) + (none) + ) + +;; definition for function boulder1-trans +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder1-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 82.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +;; definition for function boulder2-trans-2 +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder2-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 120.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +;; definition for function boulder2-trans +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder2-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 82.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder2-trans-2) + ) + 0 + (none) + ) + +;; definition for function boulder3-trans-2 +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder3-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 131.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +;; definition for function boulder3-trans +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder3-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 80.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder3-trans-2) + ) + 0 + (none) + ) + +;; definition for function boulder4-trans-3 +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder4-trans-3 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 152.4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "boulder-splash") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 552) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook nothing) + ) + 0 + (none) + ) + +;; definition for function boulder4-trans-2 +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder4-trans-2 fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 116.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder4-trans-3) + ) + 0 + (none) + ) + +;; definition for function boulder4-trans +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior boulder4-trans fireboulder () + (spawn (-> self part) (-> self draw origin)) + (when (>= (ja-aframe-num 0) 74.0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self draw origin quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (sound-play-by-name + (static-sound-name "v2ogre-boulder") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 + (the-as part-tracker s5-1) + *entity-pool* + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + part-tracker-init + (-> *part-group-id-table* 551) + -1 + #f + #f + #f + gp-0 + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event self 'trans-hook boulder4-trans-2) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate ogreboss-village2-throw (ogreboss-village2) + :trans + ogreboss-village2-trans + :code + (behavior () + (let ((gp-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> self boulder) (ppointer->handle (when gp-0 + (let + ((t9-1 + (method-of-type + manipy + activate + ) + ) + ) + (t9-1 + (the-as manipy gp-0) + self + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-0 + manipy-init + (-> self entity extra trans) + (-> self entity) + *fireboulder-sg* + #f + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-pre-throw" + 0 + ) + (send-event (handle->process (-> self boulder)) 'draw #t) + (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) + (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) + (send-event + (handle->process (-> self boulder)) + 'eval + (lambda :behavior ogreboss-village2 + () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) + (set! (-> self part) v0-0) + v0-0 + ) + ) + ) + (ja-channel-push! 1 60) + (let ((a0-31 (-> self skel root-channel 0))) + (set! + (-> a0-31 frame-group) + (the-as art-joint-anim (-> self draw art-group data 7)) + ) + (set! + (-> a0-31 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 7)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-31 param 1) 1.0) + (set! (-> a0-31 frame-num) 0.0) + (joint-control-channel-group! + a0-31 + (the-as art-joint-anim (-> self draw art-group data 7)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-32 (-> self skel root-channel 0))) + (set! + (-> a0-32 param 0) + (the float (+ (-> a0-32 frame-group data 0 length) -1)) + ) + (set! (-> a0-32 param 1) 1.0) + (joint-control-channel-group-eval! + a0-32 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let* ((v1-72 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-73 (the-as number (logior #x3f800000 v1-72))) + (f0-9 (+ -1.0 (the-as float v1-73))) + ) + (cond + ((< 0.75 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder1" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder1-trans + ) + ) + ((< 0.5 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder2" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder2-trans + ) + ) + ((< 0.25 f0-9) + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder3" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder3-trans + ) + ) + (else + (send-event + (handle->process (-> self boulder)) + 'art-joint-anim + "fireboulder-boulder4" + 0 + ) + (send-event + (handle->process (-> self boulder)) + 'trans-hook + boulder4-trans + ) + ) + ) + ) + (ja-channel-push! 1 60) + (let ((a0-69 (-> self skel root-channel 0))) + (set! + (-> a0-69 frame-group) + (the-as art-joint-anim (-> self draw art-group data 5)) + ) + (set! + (-> a0-69 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 5)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-69 param 1) 1.0) + (set! (-> a0-69 frame-num) 0.0) + (joint-control-channel-group! + a0-69 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-70 (-> self skel root-channel 0))) + (set! + (-> a0-70 param 0) + (the float (+ (-> a0-70 frame-group data 0 length) -1)) + ) + (set! (-> a0-70 param 1) 1.0) + (joint-control-channel-group-eval! + a0-70 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (go ogreboss-village2-idle) + (none) + ) + :post + (the-as (function none :behavior ogreboss-village2) ja-post) + ) + +;; failed to figure out what this is: +(defstate ogreboss-village2-idle (ogreboss-village2) + :trans + ogreboss-village2-trans + :code + (behavior () + (while #t + (ja-channel-push! 1 30) + (let ((v1-0 (rand-vu-int-range 0 2))) + (cond + ((zero? v1-0) + (let ((gp-0 (-> self skel root-channel 0))) + (set! + (-> gp-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! (-> gp-0 param 0) (ja-aframe 140.0 0)) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 140.0 0)) + (set! (-> gp-1 param 1) 1.0) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((gp-2 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-2) 50) + (suspend) + ) + ) + (let ((gp-3 (-> self skel root-channel 0))) + (set! + (-> gp-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! (-> gp-3 param 0) (ja-aframe 168.0 0)) + (set! (-> gp-3 param 1) 1.0) + (set! (-> gp-3 frame-num) (ja-aframe 140.0 0)) + (joint-control-channel-group! + gp-3 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 param 0) (ja-aframe 168.0 0)) + (set! (-> gp-4 param 1) 1.0) + (joint-control-channel-group-eval! + gp-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + (let ((gp-5 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-5) 50) + (suspend) + ) + ) + (let ((gp-6 (-> self skel root-channel 0))) + (set! + (-> gp-6 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + (set! + (-> gp-6 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 2)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> gp-6 param 1) 1.0) + (set! (-> gp-6 frame-num) (ja-aframe 168.0 0)) + (joint-control-channel-group! + gp-6 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-15 (-> self skel root-channel 0))) + (set! + (-> a0-15 param 0) + (the float (+ (-> a0-15 frame-group data 0 length) -1)) + ) + (set! (-> a0-15 param 1) 1.0) + (joint-control-channel-group-eval! + a0-15 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((= v1-0 1) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 frame-group) + (the-as art-joint-anim (-> self draw art-group data 4)) + ) + (set! + (-> a0-18 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 4)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-18 param 1) 1.0) + (set! (-> a0-18 frame-num) 0.0) + (joint-control-channel-group! + a0-18 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-19 (-> self skel root-channel 0))) + (set! + (-> a0-19 param 0) + (the float (+ (-> a0-19 frame-group data 0 length) -1)) + ) + (set! (-> a0-19 param 1) 1.0) + (joint-control-channel-group-eval! + a0-19 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + (else + (dotimes (gp-7 4) + (let ((a0-21 (-> self skel root-channel 0))) + (set! + (-> a0-21 frame-group) + (the-as art-joint-anim (-> self draw art-group data 3)) + ) + (set! + (-> a0-21 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 3)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-21 param 1) 1.0) + (set! (-> a0-21 frame-num) 0.0) + (joint-control-channel-group! + a0-21 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-22 (-> self skel root-channel 0))) + (set! + (-> a0-22 param 0) + (the float (+ (-> a0-22 frame-group data 0 length) -1)) + ) + (set! (-> a0-22 param 1) 1.0) + (joint-control-channel-group-eval! + a0-22 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ) + ) + ) + (let* ((v1-104 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-105 (the-as number (logior #x3f800000 v1-104))) + (f0-33 (+ -1.0 (the-as float v1-105))) + ) + (cond + ((< 0.6666667 f0-33) + (ja-channel-push! 1 60) + (let ((a0-27 (-> self skel root-channel 0))) + (set! + (-> a0-27 frame-group) + (the-as art-joint-anim (-> self draw art-group data 6)) + ) + (set! + (-> a0-27 param 0) + (the + float + (+ + (-> + (the-as art-joint-anim (-> self draw art-group data 6)) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-27 param 1) 1.0) + (set! (-> a0-27 frame-num) 0.0) + (joint-control-channel-group! + a0-27 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-28 (-> self skel root-channel 0))) + (set! + (-> a0-28 param 0) + (the float (+ (-> a0-28 frame-group data 0 length) -1)) + ) + (set! (-> a0-28 param 1) 1.0) + (joint-control-channel-group-eval! + a0-28 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + ) + ) + ((not (handle->process (-> self boulder))) + (go ogreboss-village2-throw) + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior ogreboss-village2) ja-post) + ) + +;; definition for method 11 of type ogreboss-village2 +;; INFO: Return type mismatch object vs none. +(defmethod + copy-defaults! + ogreboss-village2 + ((obj ogreboss-village2) (arg0 res-lump)) + (let + ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) + (dummy-46 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 1) + (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) + ) + (dummy-28 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *ogreboss-village2-sg* '()) + (set-vector! (-> obj root scale) 0.65 0.65 0.65 1.0) + (transform-post) + (set! (-> obj root pause-adjust-distance) 122880.0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj boulder) (the-as handle #f)) + (go ogreboss-village2-idle) + (none) + ) + +;; definition of type villageb-ogreboss +(deftype villageb-ogreboss (ogreboss-village2) + () + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + ) + +;; definition for method 3 of type villageb-ogreboss +(defmethod inspect villageb-ogreboss ((obj villageb-ogreboss)) + (let ((t9-0 (method-of-type ogreboss-village2 inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type villageb-water +(deftype villageb-water (water-anim) + () + :heap-base #x70 + :method-count-assert 30 + :size-assert #xdc + :flag-assert #x1e007000dc + ) + +;; definition for method 3 of type villageb-water +(defmethod inspect villageb-water ((obj villageb-water)) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition for symbol ripple-for-villageb-water, type ripple-wave-set +(define + ripple-for-villageb-water + (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 6.0 + :wave + (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 7.0 :xdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 7.0 :xdiv -1 :zdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 3.0) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 22 of type villageb-water +(defmethod TODO-RENAME-22 villageb-water ((obj villageb-water)) + (let ((t9-0 (method-of-type water-anim TODO-RENAME-22))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (let ((v0-2 ripple-for-villageb-water)) + (set! (-> v1-2 waveform) v0-2) + v0-2 + ) + ) + ) diff --git a/test/decompiler/reference/levels/village2/village2-part_REF.gc b/test/decompiler/reference/levels/village2/village2-part_REF.gc index e3f35ec427..806a4500ab 100644 --- a/test/decompiler/reference/levels/village2/village2-part_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-part_REF.gc @@ -2634,8 +2634,8 @@ 1024 0 0 - (the-as uint 1) - (the-as vector #t) + 1 + #t ) ) ) diff --git a/test/goalc/test_with_game.cpp b/test/goalc/test_with_game.cpp index d0e7d45fd7..ae79197a28 100644 --- a/test/goalc/test_with_game.cpp +++ b/test/goalc/test_with_game.cpp @@ -923,6 +923,13 @@ TEST_F(WithGameTests, Mips2C_CallGoal) { {"1 2 3 4 5 6 7 8\n12\n"}); } +TEST(TypeConsistency, MANUAL_TEST_TypeConsistencyWithBuildFirst) { + Compiler compiler; + compiler.enable_throw_on_redefines(); + compiler.run_test_no_load("test/goalc/source_templates/with_game/test-build-game.gc"); + compiler.run_test_no_load("decompiler/config/all-types.gc"); +} + TEST(TypeConsistency, TypeConsistency) { Compiler compiler; compiler.enable_throw_on_redefines(); diff --git a/test/offline/config.jsonc b/test/offline/config.jsonc index c0a7b825a7..c55d53fc35 100644 --- a/test/offline/config.jsonc +++ b/test/offline/config.jsonc @@ -4,7 +4,7 @@ "DGO/CIT.DGO", "DGO/MIS.DGO", "DGO/JUB.DGO", "DGO/SUN.DGO", "DGO/DEM.DGO", "DGO/FIN.DGO", "DGO/JUN.DGO", "DGO/FIC.DGO", "DGO/SNO.DGO", "DGO/SWA.DGO", "DGO/MAI.DGO", "DGO/ROB.DGO", - "DGO/LAV.DGO", "DGO/OGR.DGO", "DGO/TRA.DGO", "DGO/ROL.DGO"], + "DGO/LAV.DGO", "DGO/OGR.DGO", "DGO/TRA.DGO", "DGO/ROL.DGO", "DGO/DAR.DGO"], "skip_compile_files": [ "timer", // accessing timer regs @@ -131,7 +131,16 @@ // default-menu "all-texture-tweak-adjust", // dynamic-field access placeholder case TODO "debug-menu-make-instance-menu", // also disabled - + + // joint + "(method 9 art-mesh-geo)", // PLACEHOLDER array access + "flatten-joint-control-to-spr", + "make-joint-jump-tables", + "(method 5 art-joint-anim)", // defined identically twice in the same file...probably a bug? + + // process-drawable + "fill-skeleton-cache", // cache dxwbin + "execute-math-engine", // handle casts -- was fixed manually // ambient "ambient-type-music", // IR_StoreConstOffset::do_codegen can't handle this (c {} sz {})