From c245f37feb8738fb458c0a9c75fcc189419110a8 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Sun, 26 Dec 2021 16:43:16 +0000 Subject: [PATCH] [decomp] `joint` and related (#1003) * update jak 2 config and hack to make game text dumpable * update stuff * update src * do `cspace<-parented-transformq-joint!` * progress.... kind of... * more drawable stuff * clagng * bones begin * more bones * even more bones * everything builds * touches * errors * ? * fix `quicksandlurker` * updates * update refs * more fixes * update refs --- common/type_system/TypeSystem.cpp | 2 +- common/util/DgoReader.cpp | 3 +- decompiler/IR2/AtomicOpTypeAnalysis.cpp | 10 + decompiler/ObjectFile/ObjectFileDB.cpp | 7 +- decompiler/ObjectFile/ObjectFileDB.h | 2 +- decompiler/analysis/cfg_builder.cpp | 5 +- decompiler/config.cpp | 1 + decompiler/config.h | 3 + decompiler/config/all-types.gc | 314 +- decompiler/config/jak1_ntsc_black_label.jsonc | 1 + .../config/jak1_ntsc_black_label/hacks.jsonc | 15 +- .../jak1_ntsc_black_label/label_types.jsonc | 8 +- .../stack_structures.jsonc | 13 +- .../jak1_ntsc_black_label/type_casts.jsonc | 175 +- .../jak1_ntsc_black_label/var_names.jsonc | 85 +- decompiler/config/jak2/hacks.jsonc | 545 ++ decompiler/config/jak2/inputs.jsonc | 187 + decompiler/config/jak2/stack_structures.jsonc | 5045 +++++++++++++++++ decompiler/config/jak2/type_casts.jsonc | 114 + decompiler/config/jak2/type_hints.jsonc | 112 - decompiler/config/jak2_ntsc_v1.jsonc | 263 +- decompiler/data/game_text.cpp | 11 +- decompiler/data/game_text.h | 6 +- decompiler/main.cpp | 2 +- docs/markdown/lib.md | 119 +- goal_src/engine/anim/bones-h.gc | 10 +- goal_src/engine/anim/bones.gc | 3 + goal_src/engine/anim/joint-h.gc | 13 +- goal_src/engine/anim/joint.gc | 1851 +++--- goal_src/engine/collide/collide-frag.gc | 6 +- goal_src/engine/data/art-h.gc | 29 +- goal_src/engine/debug/default-menu.gc | 17 +- goal_src/engine/draw/drawable-actor-h.gc | 3 +- goal_src/engine/draw/drawable-ambient-h.gc | 3 +- goal_src/engine/draw/drawable-group.gc | 2 +- goal_src/engine/draw/drawable-h.gc | 2 +- goal_src/engine/draw/drawable-inline-array.gc | 2 +- goal_src/engine/draw/drawable.gc | 594 +- goal_src/engine/draw/process-drawable.gc | 1814 +++--- goal_src/engine/game/collectables.gc | 12 +- goal_src/engine/game/generic-obs.gc | 4577 +++++++-------- goal_src/engine/game/task/process-taskable.gc | 2413 ++++---- goal_src/engine/gfx/shrub/shrubbery-h.gc | 4 +- goal_src/engine/gfx/tfrag/tfrag-methods.gc | 12 +- goal_src/engine/gfx/tie/tie-h.gc | 5 +- goal_src/engine/gfx/vis/bsp-h.gc | 3 +- goal_src/engine/gfx/vis/bsp.gc | 4 +- goal_src/engine/level/level.gc | 2 +- goal_src/engine/math/matrix.gc | 95 +- goal_src/engine/target/logic-target.gc | 4031 ++++++------- goal_src/engine/target/target-h.gc | 3 + goal_src/engine/target/target-util.gc | 2036 +++---- goal_src/game.gp | 12 + goal_src/goal-lib.gc | 5 + goal_src/goos-lib.gs | 6 + goal_src/kernel-defs.gc | 1 - goal_src/kernel/gkernel-h.gc | 2 +- goal_src/kernel/gkernel.gc | 2 +- goal_src/levels/beach/beach-rocks.gc | 993 ++-- goal_src/levels/beach/lurkerworm.gc | 1267 ++--- goal_src/levels/citadel/citadel-obs.gc | 2386 +++----- goal_src/levels/citadel/citb-drop-plat-CIT.gc | 811 +-- goal_src/levels/citadel/citb-plat.gc | 1903 +++---- goal_src/levels/common/basebutton.gc | 1127 ++-- goal_src/levels/common/baseplat.gc | 470 +- goal_src/levels/common/mistycannon.gc | 6 +- goal_src/levels/common/sharkey.gc | 10 +- goal_src/levels/common/water-anim.gc | 1086 ++-- goal_src/levels/finalboss/green-eco-lurker.gc | 1842 +++--- goal_src/levels/finalboss/robotboss-misc.gc | 953 ++-- goal_src/levels/finalboss/robotboss-weapon.gc | 1684 +++--- goal_src/levels/finalboss/robotboss.gc | 4 +- goal_src/levels/jungle/jungle-mirrors.gc | 14 +- goal_src/levels/jungle/jungle-obs.gc | 2410 +++----- goal_src/levels/jungle/junglesnake.gc | 1598 +++--- goal_src/levels/maincave/gnawer.gc | 12 +- goal_src/levels/maincave/mother-spider.gc | 22 +- goal_src/levels/misty/quicksandlurker.gc | 2444 ++++---- goal_src/levels/ogre/flying-lurker.gc | 68 +- goal_src/levels/ogre/ogre-obs.gc | 2946 ++++------ goal_src/levels/snow/snow-flutflut-obs.gc | 1877 +++--- goal_src/levels/sunken/qbert-plat.gc | 1174 ++-- goal_src/levels/sunken/sun-iris-door.gc | 715 +-- goal_src/levels/village1/village-obs-VI1.gc | 1106 ++-- goal_src/levels/village2/village2-obs.gc | 3276 +++++------ goalc/debugger/Debugger.cpp | 36 +- scripts/batch/decomp-jak2.bat | 4 + scripts/update-goal-src.py | 1 - .../decompiler/reference/decompiler-macros.gc | 2 +- .../reference/engine/anim/bones-h_REF.gc | 38 +- .../reference/engine/anim/joint-h_REF.gc | 40 +- .../reference/engine/anim/joint_REF.gc | 772 +-- .../reference/engine/camera/pov-camera_REF.gc | 2 +- .../engine/collide/collide-frag_REF.gc | 9 +- .../reference/engine/data/art-h_REF.gc | 4 +- .../engine/draw/drawable-actor-h_REF.gc | 2 +- .../engine/draw/drawable-ambient-h_REF.gc | 2 +- .../engine/draw/drawable-group_REF.gc | 4 +- .../reference/engine/draw/drawable-h_REF.gc | 2 +- .../engine/draw/drawable-inline-array_REF.gc | 2 +- .../engine/draw/process-drawable_REF.gc | 111 +- .../reference/engine/game/crates_REF.gc | 12 +- .../reference/engine/game/generic-obs_REF.gc | 85 +- .../reference/engine/game/projectiles_REF.gc | 2 +- .../engine/game/task/process-taskable_REF.gc | 4 +- .../reference/engine/gfx/shadow/shadow_REF.gc | 2 +- .../engine/gfx/shrub/shrubbery-h_REF.gc | 4 +- .../engine/gfx/tfrag/subdivide-h_REF.gc | 8 +- .../engine/gfx/tfrag/tfrag-methods_REF.gc | 12 +- .../reference/engine/gfx/tie/tie-h_REF.gc | 2 +- .../reference/engine/gfx/vis/bsp_REF.gc | 2 +- .../reference/engine/gfx/water/water_REF.gc | 2 +- .../engine/target/logic-target_REF.gc | 8 +- .../reference/engine/target/target-h_REF.gc | 3 + .../engine/target/target-util_REF.gc | 2 +- .../reference/engine/target/target2_REF.gc | 2 +- .../reference/levels/beach/beach-rocks_REF.gc | 2 +- .../reference/levels/beach/bird-lady_REF.gc | 2 +- .../reference/levels/beach/lurkerworm_REF.gc | 4 +- .../reference/levels/beach/mayor_REF.gc | 2 +- .../reference/levels/beach/sculptor_REF.gc | 2 +- .../levels/citadel/citadel-obs_REF.gc | 6 +- .../levels/citadel/citadel-sages_REF.gc | 8 +- .../levels/citadel/citb-drop-plat-CIT_REF.gc | 4 +- .../reference/levels/citadel/citb-plat_REF.gc | 8 +- .../reference/levels/common/basebutton_REF.gc | 6 +- .../reference/levels/common/baseplat_REF.gc | 4 +- .../levels/common/blocking-plane_REF.gc | 2 +- .../levels/common/mistycannon_REF.gc | 6 +- .../reference/levels/common/nav-enemy_REF.gc | 10 +- .../reference/levels/common/sharkey_REF.gc | 10 +- .../reference/levels/common/water-anim_REF.gc | 4 +- .../levels/finalboss/green-eco-lurker_REF.gc | 58 +- .../levels/finalboss/light-eco_REF.gc | 4 +- .../levels/finalboss/robotboss-misc_REF.gc | 4 +- .../levels/finalboss/robotboss-weapon_REF.gc | 10 +- .../levels/finalboss/robotboss_REF.gc | 4 +- .../levels/flut_common/flutflut_REF.gc | 2 +- .../reference/levels/jungle/darkvine_REF.gc | 4 +- .../reference/levels/jungle/fisher-JUN_REF.gc | 2 +- .../levels/jungle/jungle-mirrors_REF.gc | 14 +- .../reference/levels/jungle/jungle-obs_REF.gc | 10 +- .../levels/jungle/junglesnake_REF.gc | 8 +- .../levels/maincave/baby-spider_REF.gc | 4 +- .../levels/maincave/dark-crystal_REF.gc | 4 +- .../reference/levels/maincave/gnawer_REF.gc | 14 +- .../levels/maincave/mother-spider-egg_REF.gc | 6 +- .../levels/maincave/mother-spider_REF.gc | 22 +- .../levels/misty/quicksandlurker_REF.gc | 29 +- .../levels/ogre/flying-lurker_REF.gc | 16 +- .../reference/levels/ogre/ogre-obs_REF.gc | 4 +- .../levels/robocave/spider-egg_REF.gc | 4 +- .../levels/snow/snow-flutflut-obs_REF.gc | 4 +- .../reference/levels/sunken/bully_REF.gc | 2 +- .../reference/levels/sunken/puffer_REF.gc | 10 +- .../reference/levels/sunken/qbert-plat_REF.gc | 6 +- .../levels/sunken/sun-iris-door_REF.gc | 4 +- .../reference/levels/swamp/swamp-obs_REF.gc | 4 +- .../levels/village1/assistant_REF.gc | 2 +- .../reference/levels/village1/explorer_REF.gc | 2 +- .../levels/village1/village-obs-VI1_REF.gc | 10 +- .../levels/village2/assistant-village2_REF.gc | 2 +- .../levels/village2/swamp-blimp_REF.gc | 4 +- .../levels/village2/village2-obs_REF.gc | 20 +- .../reference/levels/village2/warrior_REF.gc | 2 +- .../levels/village3/assistant-village3_REF.gc | 2 +- .../reference/levels/village3/miners_REF.gc | 4 +- .../levels/village3/sage-village3_REF.gc | 2 +- .../levels/village_common/oracle_REF.gc | 2 +- 169 files changed, 27728 insertions(+), 30664 deletions(-) create mode 100644 decompiler/config/jak2/hacks.jsonc create mode 100644 decompiler/config/jak2/inputs.jsonc create mode 100644 decompiler/config/jak2/stack_structures.jsonc create mode 100644 decompiler/config/jak2/type_casts.jsonc delete mode 100644 decompiler/config/jak2/type_hints.jsonc create mode 100644 scripts/batch/decomp-jak2.bat diff --git a/common/type_system/TypeSystem.cpp b/common/type_system/TypeSystem.cpp index 3b8a68cc72..0acdfe5525 100644 --- a/common/type_system/TypeSystem.cpp +++ b/common/type_system/TypeSystem.cpp @@ -204,7 +204,7 @@ void TypeSystem::forward_declare_type_method_count(const std::string& name, int if (existing_count != num_methods) { throw_typesystem_error( "Type {} was defined with {} methods and is now being forward declared with {} methods", - name, existing_fwd->second, num_methods); + name, existing_count, num_methods); } } diff --git a/common/util/DgoReader.cpp b/common/util/DgoReader.cpp index 2474eb1364..f6fecd2183 100644 --- a/common/util/DgoReader.cpp +++ b/common/util/DgoReader.cpp @@ -5,6 +5,7 @@ #include "BinaryReader.h" #include "common/link_types.h" #include "third-party/json.hpp" +#include "BitUtils.h" #include "dgo_util.h" DgoReader::DgoReader(std::string file_name, const std::vector& data) @@ -47,7 +48,7 @@ DgoReader::DgoReader(std::string file_name, const std::vector& data) memcpy(entry.data.data(), reader.here(), obj_header.size); m_entries.push_back(entry); - reader.ffwd(obj_header.size); + reader.ffwd(align16(obj_header.size)); } // check we're at the end diff --git a/decompiler/IR2/AtomicOpTypeAnalysis.cpp b/decompiler/IR2/AtomicOpTypeAnalysis.cpp index a4886fc9ad..17920ce73f 100644 --- a/decompiler/IR2/AtomicOpTypeAnalysis.cpp +++ b/decompiler/IR2/AtomicOpTypeAnalysis.cpp @@ -487,6 +487,16 @@ TP_Type SimpleExpression::get_type_int2(const TypeState& input, if (out.success) { return TP_Type::make_from_ts(coerce_to_reg_type(out.result_type)); } + } else if (arg1_type.kind == TP_Type::Kind::INTEGER_CONSTANT_PLUS_VAR_MULT && + m_kind == Kind::ADD) { + FieldReverseLookupInput rd_in; + rd_in.offset = arg1_type.get_add_int_constant(); + rd_in.stride = arg1_type.get_mult_int_constant(); + rd_in.base_type = arg0_type.typespec(); + auto out = env.dts->ts.reverse_field_lookup(rd_in); + if (out.success) { + return TP_Type::make_from_ts(coerce_to_reg_type(out.result_type)); + } } if (arg0_type.kind == TP_Type::Kind::INTEGER_CONSTANT_PLUS_VAR && m_kind == Kind::ADD) { diff --git a/decompiler/ObjectFile/ObjectFileDB.cpp b/decompiler/ObjectFile/ObjectFileDB.cpp index 79a8647a5f..7d201a3753 100644 --- a/decompiler/ObjectFile/ObjectFileDB.cpp +++ b/decompiler/ObjectFile/ObjectFileDB.cpp @@ -12,6 +12,7 @@ #include #include "common/link_types.h" #include "common/util/dgo_util.h" +#include "common/util/BitUtils.h" #include "decompiler/data/tpage.h" #include "decompiler/data/game_text.h" #include "decompiler/data/StrFileReader.h" @@ -244,7 +245,7 @@ void ObjectFileDB::get_objs_from_dgo(const std::string& filename, const Config& add_obj_from_dgo(name, obj_header.name, reader.here(), obj_header.object_count, dgo_base_name, config); - reader.ffwd(obj_header.object_count); + reader.ffwd(align16(obj_header.object_count)); } // check we're at the end @@ -612,7 +613,7 @@ std::string ObjectFileDB::process_tpages(TextureDB& tex_db) { return result; } -std::string ObjectFileDB::process_game_text_files() { +std::string ObjectFileDB::process_game_text_files(GameTextVersion version) { lg::info("- Finding game text..."); std::string text_string = "COMMON"; Timer timer; @@ -624,7 +625,7 @@ std::string ObjectFileDB::process_game_text_files() { for_each_obj([&](ObjectFileData& data) { if (data.name_in_dgo.substr(1) == text_string) { file_count++; - auto statistics = process_game_text(data); + auto statistics = process_game_text(data, version); string_count += statistics.total_text; char_count += statistics.total_chars; if (text_by_language_by_id.find(statistics.language) != text_by_language_by_id.end()) { diff --git a/decompiler/ObjectFile/ObjectFileDB.h b/decompiler/ObjectFile/ObjectFileDB.h index 8a493ef4ad..eb6e75ce63 100644 --- a/decompiler/ObjectFile/ObjectFileDB.h +++ b/decompiler/ObjectFile/ObjectFileDB.h @@ -99,7 +99,7 @@ class ObjectFileDB { std::string process_tpages(TextureDB& tex_db); std::string process_game_count_file(); - std::string process_game_text_files(); + std::string process_game_text_files(GameTextVersion version); ObjectFileData& lookup_record(const ObjectFileRecord& rec); DecompilerTypeSystem dts; diff --git a/decompiler/analysis/cfg_builder.cpp b/decompiler/analysis/cfg_builder.cpp index 7ea244669c..d1dcf0ae0c 100644 --- a/decompiler/analysis/cfg_builder.cpp +++ b/decompiler/analysis/cfg_builder.cpp @@ -217,9 +217,8 @@ void clean_up_break_final(const Function& f, BreakElement* ir, const Env& env) { } if (!dead) { - lg::error("failed to recognize dead code after break, got {}", - ir->dead_code->to_string(f.ir2.env)); - throw std::runtime_error("failed to recognize dead code"); + throw std::runtime_error(fmt::format("failed to recognize dead code after break, got {}", + ir->dead_code->to_string(f.ir2.env))); } assert(dead); auto src = dynamic_cast(dead->src()->try_as_single_element()); diff --git a/decompiler/config.cpp b/decompiler/config.cpp index 7972083799..bb9e65251d 100644 --- a/decompiler/config.cpp +++ b/decompiler/config.cpp @@ -28,6 +28,7 @@ Config read_config_file(const std::string& path_to_config_file) { auto cfg = parse_commented_json(config_str, path_to_config_file); config.game_version = cfg.at("game_version").get(); + config.text_version = cfg.at("text_version").get(); auto inputs_json = read_json_file_from_config(cfg, "inputs_file"); config.dgo_names = inputs_json.at("dgo_names").get>(); diff --git a/decompiler/config.h b/decompiler/config.h index 6840ba0234..105d37973a 100644 --- a/decompiler/config.h +++ b/decompiler/config.h @@ -6,6 +6,7 @@ #include #include #include "decompiler/Disasm/Register.h" +#include "decompiler/data/game_text.h" namespace decompiler { struct RegisterTypeCast { @@ -109,6 +110,8 @@ struct Config { bool is_pal = false; + GameTextVersion text_version = GameTextVersion::JAK1_V1; + std::unordered_set allowed_objects; std::unordered_set banned_objects; std::unordered_map>> diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index ff9341ffa7..1ff4bdbf6b 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -5215,10 +5215,6 @@ (texture-page texture-page 9 :offset-assert 60) (loaded-texture-page texture-page 16 :offset-assert 96) (loaded-texture-page-count int32 :offset-assert 160) - ; (foreground-sink-group-0 dma-foreground-sink-group :inline :offset-assert 176) - ; (foreground-sink-group-1 dma-foreground-sink-group :inline :offset-assert 208) - ; (foreground-sink-group-2 dma-foreground-sink-group :inline :offset-assert 240) - ; (array-pad uint8 12) (foreground-sink-group dma-foreground-sink-group 3 :inline :offset-assert 176) ;; inline basic (foreground-draw-engine engine 3 :offset-assert 272) (entity entity-links-array :offset-assert 284) @@ -6307,7 +6303,7 @@ :flag-assert #x1200000020 (:methods (login (_type_) _type_ 9) ;; probably login or init. - (draw (_type_ drawable display-frame) none 10) ;; display-frame is from the method inspect tool + (draw (_type_ _type_ display-frame) none 10) (collide-with-box (_type_ int collide-list) none 11) (collide-y-probe (_type_ int collide-list) none 12) (collide-ray (_type_ int collide-list) none 13) @@ -8015,15 +8011,40 @@ ) ) +(defenum draw-status + :type uint8 + :bitfield #t + (drwf00 0) + (drwf01 1) + (drwf02 2) + (drwf03 3) + (drwf04 4) + (drwf05 5) + (drwf06 6) + (drwf07 7) + ) + +(defenum draw-effect + :type uint8 + (drweff0 0) + (drweff1 1) + (drweff2 2) + (title 3) + (drweff4 4) + (drweff5 5) + (drweff6 6) + (drweff7 7) + ) + (declare-type ripple-control basic) (declare-type shadow-control basic) (declare-type shadow-geo art-element) (declare-type process-drawable process) (deftype draw-control (basic) - ((status uint8 :offset-assert 4) + ((status draw-status :offset-assert 4) (matrix-type uint8 :offset-assert 5) (data-format uint8 :offset-assert 6) - (global-effect uint8 :offset-assert 7) + (global-effect draw-effect :offset-assert 7) (art-group art-group :offset-assert 8) (jgeo art-joint-geo :offset-assert 12) (mgeo merc-ctrl :offset-assert 16) @@ -9598,9 +9619,9 @@ (root-channel (inline-array joint-control-channel) :offset 16) (blend-index int32 :offset-assert 20) (active-channels int32 :offset-assert 24) - (generate-frame-function (function pointer int process-drawable none) :offset-assert 28) + (generate-frame-function (function (inline-array vector) int process-drawable int) :offset-assert 28) (prebind-function (function pointer int process-drawable none) :offset-assert 32) - (postbind-function (function pointer int process-drawable none) :offset-assert 36) + (postbind-function (function process-drawable none) :offset-assert 36) (effect effect-control :offset-assert 40) (channel joint-control-channel 3 :inline :offset-assert 48) ;; actually dynamic? (frame-group0 art-joint-anim :offset 60) @@ -9659,8 +9680,8 @@ (jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328) (fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392) (frame-data joint-anim-compressed-frame 2 :inline :offset-assert 9600) - ;(flatten-array UNKNOWN 576 :offset-assert 2400) no clue! - ;(flattened UNKNOWN 24 :offset-assert 2400) no clue! + (flatten-array float 576 :offset 2400) ;; no clue! + (flattened vector 24 :inline :offset 2400) ;; no clue! ) :method-count-assert 9 :size-assert #x3640 @@ -9701,8 +9722,8 @@ ) (deftype bone-regs (structure) - ((joint-ptr (pointer joint) :offset-assert 0) - (bone-ptr (pointer bone) :offset-assert 4) + ((joint-ptr (inline-array joint) :offset-assert 0) + (bone-ptr (inline-array bone) :offset-assert 4) (num-bones uint32 :offset-assert 8) ) :method-count-assert 9 @@ -9717,7 +9738,7 @@ (distance vector :inline :offset-assert 160) (next-tag dma-packet :inline :offset-assert 176) (dma-buf dma-buffer :offset-assert 192) - (sink-group basic :offset-assert 196) ;; dma sink + (sink-group dma-foreground-sink-group :offset-assert 196) ;; dma sink (next-pris dma-packet :offset-assert 200) (next-merc dma-packet :offset-assert 204) (wait-count uint32 :offset-assert 208) @@ -9788,7 +9809,7 @@ ;; - Symbols -(define-extern *merc-globals* symbol) +(define-extern *merc-globals* merc-globals) ;; ---------------------- @@ -12051,6 +12072,9 @@ (target-death symbol) (target-hit-ground symbol) (target-clone-anim handle) + target-title + target-demo + target-warp-in ) ) @@ -12519,7 +12543,7 @@ ) (deftype shrubbery (drawable) - ((textures (inline-array adgif-shader) :offset 4) + ((textures (inline-array adgif-shader) :offset 4) (header qword :offset 8) (obj-qwc uint8 :offset 12) (vtx-qwc uint8 :offset 13) @@ -12581,7 +12605,7 @@ ) (deftype prototype-shrubbery (drawable-inline-array) - ((data generic-shrub-fragment 1 :inline :offset-assert 32) + ((data shrubbery 1 :inline :offset-assert 32) (pad uint32) ) :method-count-assert 18 @@ -12777,7 +12801,7 @@ ) (deftype prototype-tie (drawable-inline-array) - ((data instance-tie 1 :inline :offset-assert 32) ;; not sure on type here + ((data tie-fragment 1 :inline :offset-assert 32) (pad uint32) ) :method-count-assert 18 @@ -13354,7 +13378,7 @@ (deftype foreground-area (structure) ((joint-work joint-work :inline :offset-assert 0) (generic-work generic-work :inline :offset 0) - (bone-mem bone-memory :inline :offset 0) + (bone-mem bone-memory :score 1999999999 :inline :offset 0) (shadow-work shadow-work :inline :offset 0) ) :method-count-assert 9 @@ -15601,7 +15625,7 @@ (define-extern flatten-joint-control-to-spr (function joint-control int)) (define-extern make-joint-jump-tables (function int)) -(define-extern calc-animation-from-spr (function joint-control int int)) +(define-extern calc-animation-from-spr (function (inline-array vector) int object)) (define-extern decompress-fixed-data-to-accumulator (function none)) (define-extern decompress-frame-data-to-accumulator (function none)) (define-extern decompress-frame-data-pair-to-accumulator (function none)) @@ -15609,7 +15633,7 @@ (define-extern matrix-from-control-channel! (function matrix joint joint-control-channel matrix)) (define-extern matrix-from-control-pair! (function matrix matrix joint matrix)) (define-extern matrix-from-joint-anim-frame (function joint-anim-compressed-control int int matrix)) ;; ??? -(define-extern create-interpolated-joint-animation-frame (function joint-control int process-drawable int)) +(define-extern create-interpolated-joint-animation-frame (function (inline-array vector) int process-drawable int)) (define-extern mem-size (function basic symbol int int)) (define-extern jacc-mem-usage (function joint-anim-compressed-control memory-usage-block int joint-anim-compressed-control)) (define-extern joint-anim-inspect-elt (function joint-anim float joint-anim)) @@ -15621,15 +15645,15 @@ (define-extern joint-control-copy! (function joint-control joint-control joint-control)) (define-extern joint-control-remap! (function joint-control art-group art-group pair int string object)) (define-extern cspace<-cspace! (function cspace cspace matrix)) -(define-extern cspace<-rot-yxy! function) ;; unused -(define-extern cspace<-transform-yxy! function) ;; unused +(define-extern cspace<-rot-yxy! (function cspace transform matrix)) ;; unused +(define-extern cspace<-transform-yxy! (function cspace transform matrix)) ;; unused (define-extern cspace<-transformq+trans! (function cspace transformq vector matrix)) (define-extern cspace<-transformq+world-trans! (function cspace transformq vector matrix)) (define-extern cspace-calc-total-matrix! (function cspace matrix matrix)) (define-extern cspace<-matrix-no-push-joint! (function cspace joint-control matrix)) (define-extern cspace<-matrix-joint! (function cspace matrix matrix)) (define-extern cspace<-parented-matrix-joint! (function cspace matrix matrix)) -(define-extern clear-frame-accumulator function) +(define-extern clear-frame-accumulator (function (inline-array vector) none)) (define-extern normalize-frame-quaternions function) @@ -15733,19 +15757,19 @@ ;; - Unknowns (define-extern *subdivide-settings* subdivide-settings) -(define-extern *tfrag-work* tfrag-work) ;; unknown type -(define-extern *perf-stats* perf-stat-array) ;; unknown type +(define-extern *tfrag-work* tfrag-work) +(define-extern *perf-stats* perf-stat-array) (define-extern *merc-global-stats* merc-global-stats) (define-extern *stat-string-tfrag-near* string) -(define-extern *stat-string-tfrag* string) ;; unknown type -(define-extern *stat-string-total* string) ;; unknown type -(define-extern *terrain-context* terrain-context) ;; unknown type -(define-extern GSH_ENABLE symbol) ;; unknown type -(define-extern GSH_BUCKET bucket-id) ;; unknown type -(define-extern GSH_WHICH_STAT int) ;; unknown type -(define-extern GSH_MAX_DISPLAY basic) ;; unknown type -(define-extern GSH_TIME int) ;; unknown type -(define-extern *gomi-stats-hack* (inline-array perf-stat)) ;; unknown type +(define-extern *stat-string-tfrag* string) +(define-extern *stat-string-total* string) +(define-extern *terrain-context* terrain-context) +(define-extern GSH_ENABLE symbol) +(define-extern GSH_BUCKET bucket-id) +(define-extern GSH_WHICH_STAT int) +(define-extern GSH_MAX_DISPLAY basic) +(define-extern GSH_TIME int) +(define-extern *gomi-stats-hack* (inline-array perf-stat)) ;; ---------------------- @@ -15868,15 +15892,15 @@ ;; - Symbols -(define-extern *shadow-middot-texture* texture) ;; unknown type +(define-extern *shadow-middot-texture* texture) ;; - Unknowns -(define-extern *sprite-hvdf-data* sprite-hvdf-data) ;; unknown type -(define-extern *sprite-hvdf-control* sprite-hvdf-control) ;; unknown type -(define-extern sprite-vu1-block vu-function) ;; unknown type -(define-extern *sprite-array-3d* sprite-array-3d) ;; unknown type -(define-extern *sprite-array-2d* sprite-array-2d) ;; unknown type +(define-extern *sprite-hvdf-data* sprite-hvdf-data) +(define-extern *sprite-hvdf-control* sprite-hvdf-control) +(define-extern sprite-vu1-block vu-function) +(define-extern *sprite-array-3d* sprite-array-3d) +(define-extern *sprite-array-2d* sprite-array-2d) (define-extern *sprite-aux-list* sprite-aux-list) @@ -15931,7 +15955,7 @@ ;; - Symbols -(define-extern *debug-sphere-table* debug-sphere-table) ;; unknown type +(define-extern *debug-sphere-table* debug-sphere-table) ;; ---------------------- @@ -16191,46 +16215,67 @@ ;; - Types -; (deftype bone-calculation (structure) -; ((flags uint16 :offset-assert 0) -; (num-bones uint16 :offset-assert 2) -; (matrix-area uint32 :offset-assert 4) -; (joints uint32 :offset-assert 8) -; (bones uint32 :offset-assert 12) -; (ripple-scale float :offset-assert 16) -; (ripple-y-scale float :offset-assert 20) -; (ripple-normal-scale float :offset-assert 24) -; (ripple-area uint32 :offset-assert 28) -; (next bone-calculation :offset-assert 32) -; (dummy-1 uint32 :offset-assert 36) -; (dummy-2 uint32 :offset-assert 40) -; (dummy-3 uint32 :offset-assert 44) -; ) -; :method-count-assert 9 -; :size-assert #x30 -; :flag-assert #x900000030 -; ) +(defenum bone-calc-flags + :type uint16 + :bitfield #t + (bncfl00 0) + (bncfl01 1) + (bncfl02 2) + (bncfl03 3) + (bncfl04 4) + (bncfl05 5) + (bncfl06 6) + (bncfl07 7) + (bncfl08 8) + (bncfl09 9) + (bncfl10 10) + (bncfl11 11) + (bncfl12 12) + (bncfl13 13) + (bncfl14 14) + (bncfl15 15) + ) -; (deftype bone-calculation-list (structure) -; ((first bone-calculation :offset-assert 0) -; (next bone-calculation :offset-assert 4) -; ) -; :method-count-assert 9 -; :size-assert #x8 -; :flag-assert #x900000008 -; ) +(deftype bone-calculation (structure) + ((flags bone-calc-flags :offset-assert 0) + (num-bones uint16 :offset-assert 2) + (matrix-area (inline-array matrix) :offset-assert 4) + (joints (inline-array joint) :offset-assert 8) + (bones (inline-array bone) :offset-assert 12) + (ripple-scale float :offset-assert 16) + (ripple-y-scale float :offset-assert 20) + (ripple-normal-scale float :offset-assert 24) + (ripple-area (inline-array vector) :offset-assert 28) + (next bone-calculation :offset-assert 32) + (dummy-1 uint32 :offset-assert 36) + (dummy-2 uint32 :offset-assert 40) + (dummy-3 uint32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) -; (deftype texscroll-globals (structure) -; ((requests int32 :offset-assert 0) -; (effects UNKNOWN 32 :offset-assert 4) -; ) -; :method-count-assert 9 -; :size-assert #x84 -; :flag-assert #x900000084 -; ) +(deftype bone-calculation-list (structure) + ((first bone-calculation :offset-assert 0) + (next bone-calculation :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype texscroll-globals (structure) + ((requests int32 :offset-assert 0) + (effects merc-effect 32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) (deftype merc-effect-bucket-info (structure) - ((color-fade uint32 :offset-assert 0) + ((color-fade rgba :offset-assert 0) (use-mercneric uint8 :offset-assert 4) (ignore-alpha uint8 :offset-assert 5) (pad0 uint8 :offset-assert 6) @@ -16257,37 +16302,37 @@ ;; - Functions (define-extern paused? (function symbol)) -(define-extern dump-mem function) -(define-extern bone-list-init function) -(define-extern texscroll-make-request function) +(define-extern dump-mem (function pointer int none)) +(define-extern bone-list-init (function none)) +(define-extern texscroll-make-request (function merc-effect none)) (define-extern texscroll-execute (function none)) -(define-extern bones-set-sqwc function) -(define-extern bones-reset-sqwc function) -(define-extern bones-init (function dma-buffer none)) ;; TODO - unconfirmed -(define-extern draw-bones-mtx-calc function) -(define-extern bones-mtx-calc function) +(define-extern bones-set-sqwc (function none)) +(define-extern bones-reset-sqwc (function none)) +(define-extern bones-init (function dma-buffer dma-foreground-sink-group none)) +(define-extern draw-bones-mtx-calc (function bone-calculation int bone-calc-flags object)) +(define-extern bones-mtx-calc (function int pointer pointer int none)) (define-extern bones-mtx-calc-execute (function none)) -(define-extern bones-wrapup (function none)) ;; TODO - unconfirmed -(define-extern dump-qword function) -(define-extern bones-debug function) -(define-extern dump-bone-mem function) -(define-extern draw-bones-shadow function) -(define-extern draw-bones-generic-merc function) -(define-extern draw-bones-merc function) -(define-extern draw-bones-check-longest-edge function) -(define-extern draw-bones-check-longest-edge-asm function) -(define-extern draw-bones (function draw-control object float none)) +(define-extern bones-wrapup (function none)) +(define-extern dump-qword (function qword none)) +(define-extern bones-debug (function none)) +(define-extern dump-bone-mem (function none)) +(define-extern draw-bones-shadow (function draw-control object object pointer)) +(define-extern draw-bones-generic-merc (function draw-control object object int pointer)) +(define-extern draw-bones-merc (function draw-control object object int int pointer)) +(define-extern draw-bones-check-longest-edge (function draw-control float none)) +(define-extern draw-bones-check-longest-edge-asm (function draw-control float none)) +(define-extern draw-bones (function draw-control dma-buffer float none)) (define-extern draw-bones-hud (function draw-control dma-buffer none)) ;; - Unknowns -;;(define-extern *merc-bucket-info* object) ;; unknown type -;;(define-extern *bone-calculation-list* object) ;; unknown type -;;(define-extern bones-vu0-block object) ;; unknown type -;;(define-extern *texscroll-globals* object) ;; unknown type -;;(define-extern *use-generic* object) ;; unknown type -(define-extern *merc-global-array* merc-global-array) ;; unknown type -;;(define-extern *bones-first* object) ;; unknown type +(define-extern *merc-bucket-info* merc-bucket-info) +(define-extern *bone-calculation-list* bone-calculation-list) +(define-extern bones-vu0-block vu-function) +(define-extern *texscroll-globals* texscroll-globals) +(define-extern *use-generic* symbol) +(define-extern *merc-global-array* merc-global-array) +(define-extern *bones-first* symbol) (define-extern *default-shadow-settings* shadow-settings) @@ -16683,7 +16728,7 @@ ;; - Functions (define-extern upload-generic-shrub (function dma-buffer generic-shrub-fragment int int dma-buffer)) -(define-extern shrub-num-tris function) +(define-extern shrub-num-tris (function shrubbery int)) (define-extern shrub-init-frame function) (define-extern shrub-upload-model function) (define-extern shrub-do-init-frame function) @@ -18271,7 +18316,6 @@ (define-extern print-game-text-scaled (function string float font-context int none)) (define-extern disable-level-text-file-loading (function none)) (define-extern enable-level-text-file-loading (function none)) -(define-extern link (function pointer pointer int kheap int pointer)) ;; - Unknowns @@ -19618,7 +19662,7 @@ (define-extern process-drawable-from-entity! (function process-drawable entity-actor none)) (define-extern cam-launcher-long-joystick (function vector :behavior camera-slave)) (define-extern hide-hud-quick (function none)) -(define-extern command-get-process (function object process-drawable process :behavior camera-tracker)) +(define-extern command-get-process (function object process process :behavior camera-tracker)) (define-extern camera-change-to (function string int symbol symbol)) (define-extern camera-look-at (function pair uint process :behavior camera-tracker)) (define-extern camera-pov-from (function pair uint process :behavior camera-tracker)) @@ -20127,9 +20171,6 @@ (define-extern *deathcam-sg* skeleton-group) (define-extern *smack-mods* surface) ;; unknown type (define-extern *smack-up-mods* surface) ;; unknown type -(define-extern target-title (state target)) ;; unknown type -(define-extern target-demo (state target)) ;; unknown type -(define-extern target-warp-in (state target)) ;; unknown type (define-extern *auto-continue* symbol) ;; unknown type @@ -20340,8 +20381,8 @@ (define-extern draw-instance-info (function string none)) ;; only passed *stdcon* (define-extern find-instance-by-name (function string prototype-bucket)) (define-extern prototype-bucket-type (function prototype-bucket type)) -(define-extern guard-band-cull (function vector symbol)) ;; vf deps - 20-23 -(define-extern find-instance-by-index function) +(define-extern guard-band-cull (function vector symbol)) +(define-extern find-instance-by-index (function type int bsp-header prototype-bucket)) (define-extern prototype-bucket-recalc-fields (function prototype-bucket prototype-bucket)) (define-extern dma-add-process-drawable-hud (function process-drawable draw-control symbol dma-buffer none)) (define-extern foreground-engine-execute (function engine display-frame int int none)) @@ -20363,14 +20404,14 @@ ;; - Unknowns -(define-extern syncv (function int int)) ;; unknown type -(define-extern put-display-env (function object none)) ;; unknown type -(define-extern *surrogate-dma-buffer* dma-buffer) ;; unknown type -(define-extern *screen-shot* symbol) ;; unknown type -(define-extern *hud-lights* vu-lights) ;; unknown type -(define-extern *instance-mem-usage* memory-usage-block) ;; unknown type -(define-extern *add-sphere* symbol) ;; unknown type -(define-extern *generic-effect-mode* int) ;; unknown type +(define-extern syncv (function int int)) +(define-extern put-display-env (function object none)) +(define-extern *surrogate-dma-buffer* dma-buffer) +(define-extern *screen-shot* symbol) +(define-extern *hud-lights* vu-lights) +(define-extern *instance-mem-usage* memory-usage-block) +(define-extern *add-sphere* symbol) +(define-extern *generic-effect-mode* int) ;; ---------------------- @@ -20464,8 +20505,8 @@ ;; - Unknowns -(define-extern scf-get-timeout (function int)) ;; unknown type -(define-extern scf-get-inactive-timeout (function int)) ;; unknown type +(define-extern scf-get-timeout (function int)) +(define-extern scf-get-inactive-timeout (function int)) (define-extern kernel-shutdown (function none)) @@ -22107,7 +22148,7 @@ (define-extern dm-cam-render-float (function int debug-menu-msg float float float)) (define-extern dm-cam-settings-func (function int debug-menu-msg symbol)) (define-extern dm-cam-settings-func-int (function int debug-menu-msg int int int)) -(define-extern debug-create-cam-restore (function none)) ;; TODO - level-group type isn't complete +(define-extern debug-create-cam-restore (function none)) (define-extern dm-cam-mode-func (function (state camera-slave) debug-menu-msg object)) (define-extern dm-instance-pick-func (function string debug-menu-msg basic)) (define-extern dm-enable-instance-func (function string debug-menu-msg symbol)) @@ -22139,7 +22180,7 @@ (define-extern dm-task-reward-speech (function int debug-menu-msg symbol)) (define-extern dm-task-resolution (function int debug-menu-msg symbol)) (define-extern dm-anim-tester-flag-func (function int debug-menu-msg symbol)) -(define-extern dm-anim-tester-func (function int debug-menu-msg none)) ;; TODO - *anim-tester* +(define-extern dm-anim-tester-func (function int debug-menu-msg none)) (define-extern debug-menu-context-make-default-menus (function debug-menu-context debug-menu-context)) (define-extern popup-menu-context-make-default-menus (function debug-menu-context debug-menu-context)) @@ -30474,14 +30515,16 @@ ;; - Types -(declare-type quicksandlurker process-drawable) (deftype quicksandlurker-missile (process-drawable) - ((parent-override (pointer quicksandlurker) :score 100 :offset 12) - (root-override collide-shape-moving :score 100 :offset 112)) + ((root-override collide-shape-moving :score 100 :offset 112) + ) :method-count-assert 20 :size-assert #xb0 :heap-base #x40 :flag-assert #x14004000b0 + (:states + quicksandlurker-missile-impact + ) ) (deftype quicksandlurker-missile-init-data (structure) @@ -30506,13 +30549,22 @@ :size-assert #xd4 :heap-base #x70 :flag-assert #x14007000d4 + (:states + quicksandlurker-die + quicksandlurker-victory + quicksandlurker-hide + quicksandlurker-wait + quicksandlurker-track + quicksandlurker-attack + quicksandlurker-popup + ) ) ;; - Functions (define-extern orient-to-face-target (function quaternion :behavior quicksandlurker)) (define-extern quicksandlurker-spit (function (pointer process) :behavior quicksandlurker)) -(define-extern spawn-quicksandlurker-missile (function quicksandlurker vector vector entity none)) +(define-extern spawn-quicksandlurker-missile (function process vector vector entity none)) (define-extern quicksandlurker-check-hide-transition (function none :behavior quicksandlurker)) (define-extern inc-angle (function (pointer float) float float)) (define-extern quicksandlurker-missile-init-by-other (function quicksandlurker-missile-init-data entity none :behavior quicksandlurker-missile)) @@ -30525,15 +30577,7 @@ (define-extern *quicksandlurker-sg* skeleton-group) (define-extern quicksandlurker-idle (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-track (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-wait (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-popup (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-attack (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-hide (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-die (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-victory (state quicksandlurker)) ;; unknown type (define-extern quicksandlurker-missile-idle (state quicksandlurker-missile)) ;; unknown type -(define-extern quicksandlurker-missile-impact (state quicksandlurker-missile)) ;; unknown type (define-extern quicksandlurker-yawn (state quicksandlurker)) ;; unknown type diff --git a/decompiler/config/jak1_ntsc_black_label.jsonc b/decompiler/config/jak1_ntsc_black_label.jsonc index 7bfdb7cde2..2e4775f998 100644 --- a/decompiler/config/jak1_ntsc_black_label.jsonc +++ b/decompiler/config/jak1_ntsc_black_label.jsonc @@ -1,5 +1,6 @@ { "game_version": 1, + "text_version": 10, // if you want to filter to only some object names. // it will make the decompiler much faster. diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 893cf53b9a..874feff3b2 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -127,13 +127,9 @@ "ripple-execute-init", // bones - "draw-bones-hud", - "draw-bones", "draw-bones-check-longest-edge-asm", "draw-bones-merc", - "bones-mtx-calc-execute", "bones-mtx-calc", - "texscroll-execute", // generic-effect "generic-debug-light-proc", @@ -482,8 +478,11 @@ "draw-drawable-tree-trans-tfrag": [6, 8, 13, 15], "draw-drawable-tree-dirt-tfrag": [6, 8, 13, 15], "draw-drawable-tree-ice-tfrag": [6, 8, 13, 15], + + "birth-pickup-at-point": [0], - "birth-pickup-at-point": [0] + "draw-bones": [0, 1, 2, 8, 81], + "draw-bones-hud": [7, 8] }, // Sometimes the game might use format strings that are fetched dynamically, @@ -505,8 +504,7 @@ "(method 43 progress)": [ [51, 1], [94, 1] - ], - "": [] + ] }, "mips2c_functions_by_name": [ @@ -529,7 +527,8 @@ "render-boundary-tri", "draw-inline-array-tfrag", "stats-tfrag-asm", - "time-of-day-interp-colors-scratch" + "time-of-day-interp-colors-scratch", + "normalize-frame-quaternions" ], // there are some missing textures. I don't know what the game actually does here. diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index bc4d045da8..518ad0e0ac 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1459,7 +1459,7 @@ "steam-cap": [ ["L51", "attack-info"] ], - + "sidekick": [ ["L29", "vector"] ], @@ -1967,6 +1967,12 @@ ["L93", "attack-info"] ], + "bones": [ + ["L159", "shadow-settings"], + ["L161", "vector"], + ["L162", "vu-function"] + ], + // 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 f7599f1b82..337a3e46a4 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -4285,12 +4285,6 @@ [1072, "vector"] ], - "dma-add-process-drawable": [ - [32, "vector"], - [48, "vector"], - [64, "vector"] - ], - "marks-cam-restore": [ [16, "vector"], [32, "matrix"], @@ -5048,6 +5042,11 @@ [32, "matrix"] ], + "cspace<-transform-yxy!": [ + [16, "matrix"], + [80, "matrix"] + ], + "(trans notice-blue crate)": [ [16, "event-message-block"] ], @@ -5887,6 +5886,8 @@ [32, "vector"] ], + "draw-bones": [[16, "event-message-block"]], + "joint-mod-tracker-callback": [ [16, "vector"], [32, "vector"] diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 420d76f6ad..90fc7785ac 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -4150,8 +4150,9 @@ "(method 9 lod-set)": [["_stack_", 16, "res-tag"]], "execute-math-engine": [ - [12, "a1", "process-drawable"], - [15, "a1", "process-drawable"] + [12, "a1", "process"], + [15, "a1", "process"], + [[18, 21], "a0", "process-drawable"] ], "(method 18 process-drawable)": [ @@ -4209,8 +4210,12 @@ ], "dma-add-process-drawable": [ + [12, "a0", "terrain-context"], + [15, "a0", "terrain-context"], + [276, "a0", "terrain-context"], [[15, 251], "s2", "vu-lights"], - [[12, 384], "s4", "vector"], + [21, "s4", "vector"], + [277, "s4", "vector"], [290, "v1", "vector"], [292, "v1", "vector"], [297, "v1", "vector"] @@ -4222,8 +4227,9 @@ ], "(method 17 process-drawable)": [ - [104, "t9", "(function none)"], - [82, "t9", "(function none)"], + [36, "a0", "terrain-context"], + [82, "t9", "(function cspace pointer none)"], + [104, "t9", "(function cspace matrix none)"], [63, "t9", "(function cspace basic basic int)"] ], @@ -5032,7 +5038,7 @@ [58, "a1", "process-drawable"], [73, "gp", "process-drawable"], [79, "gp", "process-drawable"], - [110, "a0", "process-drawable"] + [109, "v1", "(pointer process)"] ], "(anon-function 49 generic-obs)": [ @@ -6376,6 +6382,93 @@ [49, "gp", "(pointer uint32)"] ], + "flatten-joint-control-to-spr": [ + [14, "a1", "pointer"], + [[66, 108], "a1", "(inline-array vector)"], + [[36, 38], "a1", "(inline-array vector)"], + [[39, 60], "a1", "(inline-array vector)"], + [38, "a1", "pointer"], + [[15, 37], "a1", "(inline-array vector)"], + [56, "a2", "(pointer float)"], + [120, "a0", "terrain-context"], + [154, "a0", "terrain-context"], + [189, "a1", "terrain-context"], + [184, "v1", "terrain-context"], + [172, "a1", "terrain-context"] + ], + + "matrix-from-control-pair!": [ + [18, "a0", "terrain-context"] + ], + + "cspace<-matrix-no-push-joint!": [ + [4, "a0", "terrain-context"] + ], + + "make-joint-jump-tables": [ + [5, "a0", "terrain-context"], + [11, "a0", "terrain-context"], + [17, "a0", "terrain-context"], + [23, "a0", "terrain-context"], + [29, "a0", "terrain-context"], + [35, "a0", "terrain-context"], + [41, "a0", "terrain-context"], + [47, "a0", "terrain-context"], + [53, "a0", "terrain-context"], + [59, "a0", "terrain-context"], + [65, "a0", "terrain-context"], + [71, "a0", "terrain-context"], + [77, "a0", "terrain-context"], + [83, "a0", "terrain-context"], + [89, "a0", "terrain-context"], + [95, "a0", "terrain-context"], + [101, "a0", "terrain-context"], + [107, "a0", "terrain-context"], + [113, "a0", "terrain-context"], + [119, "a0", "terrain-context"], + [125, "a0", "terrain-context"], + [131, "a0", "terrain-context"], + [137, "a0", "terrain-context"], + [143, "a0", "terrain-context"], + [149, "a0", "terrain-context"], + [155, "a0", "terrain-context"], + [161, "a0", "terrain-context"], + [167, "a0", "terrain-context"], + [173, "a0", "terrain-context"], + [179, "a0", "terrain-context"], + [185, "a0", "terrain-context"], + [191, "a0", "terrain-context"], + [197, "a0", "terrain-context"], + [203, "a0", "terrain-context"], + [209, "a0", "terrain-context"], + [215, "a0", "terrain-context"], + [221, "a0", "terrain-context"], + [227, "a0", "terrain-context"], + [233, "a0", "terrain-context"], + [239, "a0", "terrain-context"], + [245, "a0", "terrain-context"], + [251, "a0", "terrain-context"], + [257, "a0", "terrain-context"], + [263, "a0", "terrain-context"], + [269, "a0", "terrain-context"], + [275, "a0", "terrain-context"], + [281, "a0", "terrain-context"], + [287, "a0", "terrain-context"] + ], + + "find-instance-by-index": [ + [26, "t1", "drawable-tree-instance-shrub"], + [40, "t1", "drawable-tree-instance-tie"] + ], + + "draw-instance-info": [ + [224, "s1", "drawable-group"], + [143, "v1", "prototype-shrubbery"], + [148, "v1", "prototype-shrubbery"], + [299, "v1", "prototype-tie"], + [318, "v1", "prototype-tie"] + ], + "(method 24 ram-boss-proj)": [ [64, "v0", "sound-rpc-set-param"], [83, "gp", "process-drawable"], @@ -6983,6 +7076,72 @@ [479, "v1", "art-joint-anim"] ], + "bones-set-sqwc": [[2, "v1", "dma-bank-control"]], + "bones-reset-sqwc": [[2, "v1", "dma-bank-control"]], + + "bones-init": [ + [2, "a2", "terrain-context"], + [59, "a0", "(pointer int64)"], + [9, "a2", "bone-memory"], + [13, "a2", "bone-memory"], + [17, "a2", "bone-memory"], + [21, "a2", "bone-memory"], + [25, "a2", "bone-memory"], + [29, "a2", "bone-memory"], + [[31, 39], "v1", "bone-memory"] + ], + + "draw-bones-mtx-calc": [ + [[5, 8], "t2", "bone-memory"] + ], + + "bones-mtx-calc-execute": [ + [[18, 45], "v1", "bone-memory"], + [[90, 108], "v1", "(inline-array matrix)"], + [47, "a0", "dma-bank-control"], + [118, "a0", "dma-bank-control"], + [[89, 112], "a1", "(inline-array vector)"] + ], + + "bones-wrapup": [ + [[3, 26], "v1", "bone-memory"] + ], + + "texscroll-make-request": [ + [[9, 39], "a1", "mei-texture-scroll"] + ], + + "texscroll-execute": [ + [[25, 31], "a1", "mei-texture-scroll"], + [[15, 52], "a2", "merc-fragment-control"], + [[20, 24], "t1", "merc-fragment"], + [[26, 40], "t1", "(pointer int8)"], + [19, "t1", "pointer"] + ], + + "draw-bones": [ + [[50, 53], "t4", "bone-memory"], + [[110, 123], "v1", "vu-lights"], + [199, "v1", "mei-texture-scroll"], + [334, "v1", "merc-extra-info"], + [357, "a0", "(pointer int8)"], + [[38, 43], "a2", "bone-regs"], + [545, "s2", "int"], + [49, "a1", "bone-calculation"], + [262, "s2", "(pointer uint32)"], + [89, "at", "terrain-context"] + ], + + "draw-bones-hud": [ + [[14, 19], "t0", "bone-regs"], + [25, "a2", "bone-calculation"], + [[26, 29], "t6", "bone-memory"], + [[73, 89], "t2", "vu-lights"], + [89, "t1", "vu-lights"], + [78, "t1", "pointer"], + [49, "at", "terrain-context"] + ], + "joint-mod-tracker-callback": [ [[3, 99], "s4", "joint-mod-tracker"] ], @@ -7005,6 +7164,10 @@ [367, "v0", "(pointer float)"] ], + "quicksandlurker-missile-init-by-other": [ + [76, "a0", "process-drawable"] + ], + "mother-spider-full-joint-callback": [ [[10, 48], "v1", "mother-spider-thread"] ], diff --git a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc index daca80a424..1696f5760f 100644 --- a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc @@ -3661,12 +3661,6 @@ } }, - "execute-math-engine": { - "vars": { - "a0-1": ["a0-1", "process-drawable"] - } - }, - "(event citb-robotboss-idle)": { "vars": { "v0-3": ["v0-3", "symbol"] @@ -3742,12 +3736,91 @@ } }, + "dma-add-process-drawable": { + "vars": { + "a0-20": ["a0-20", "terrain-context"], + "s4-0": ["s4-0", "vector"], + "v1-42": ["v1-42", "vector"], + "s3-1": "lod-to-use", + "f30-1": "cam-dist" + } + }, + + "flatten-joint-control-to-spr": { + "vars": { + "a1-0": ["a1-0", "(inline-array vector)"], + "a1-1": ["a1-1", "(inline-array vector)"], + "a1-2": ["a1-2", "(inline-array vector)"], + "s5-0": "nb-channels", + "s4-0": "upl-idx", + "s3-0": "ch" + } + }, + "(event puffer-die)": { "vars": { "v0-0": ["v0-0", "uint"] } }, + "bones-init": { + "vars": { + "a2-1": ["a2-1", "bone-memory"], + "v1-2": ["v1-2", "bone-memory"] + } + }, + + "draw-bones-mtx-calc": { + "vars": { + "t2-0": ["t2-0", "bone-memory"] + } + }, + + "bones-mtx-calc-execute": { + "vars": { + "a1-9": ["a1-9", "(inline-array vector)"], + "v1-18": ["v1-18", "(inline-array matrix)"] + } + }, + + "texscroll-make-request": { + "vars": { + "a1-1": ["a1-1", "mei-texture-scroll"] + } + }, + + "texscroll-execute": { + "vars": { + "t1-0": ["t1-0", "merc-fragment"], + "a1-2": ["a1-2", "mei-texture-scroll"], + "t1-3": ["t1-3", "(pointer int8)"], + "a2-1": ["a2-1", "merc-fragment-control"] + } + }, + + "draw-bones": { + "vars": { + "a2-6": ["a2-6", "bone-regs"], + "t4-0": ["t4-0", "bone-memory"], + "v1-36": ["v1-36", "mei-texture-scroll"], + "v1-6": ["v1-6", "vu-lights"] + } + }, + + "draw-bones-hud": { + "vars": { + "t0-1": ["t0-1", "bone-regs"], + "t6-0": ["t6-0", "bone-memory"], + "t2-10": ["t2-10", "vu-lights"] + } + }, + + "(code manipy-idle)": { + "vars": { + "v1-29": ["v1-29", "(pointer process)"] + } + }, + "(code target-death)": { "vars": { "s5-8": ["s5-8", "handle"] diff --git a/decompiler/config/jak2/hacks.jsonc b/decompiler/config/jak2/hacks.jsonc new file mode 100644 index 0000000000..d7451025e0 --- /dev/null +++ b/decompiler/config/jak2/hacks.jsonc @@ -0,0 +1,545 @@ +{ + //////////////////////////// + // HACKS and ASM FUNCTIONS + //////////////////////////// + + "types_with_bad_inspect_methods": [ + "engine", + "bsp-header", + "joint-anim-matrix", + "part-tracker" + ], + + "no_type_analysis_functions_by_name": [], + + // this limits the number of cases in a cond. The first argument is the name of the function. + // the second argument is the name of the first condition in the cond. Use print_cfg to find it out. + // The third argument is the number of cases. If you set it too small it may fail to build the CFG. + "cond_with_else_max_lengths": [ + ["(method 20 res-lump)", "b0", 2], + ["(method 11 res-lump)", "b0", 1], + ["(method 12 res-lump)", "b0", 1] + ], + + // if a cond with an else case is being used a value in a place where it looks wrong + // you can add the function name to this list and it will more aggressively reject this rewrite. + "aggressively_reject_cond_to_value_rewrite": [ + "(method 10 res-lump)", + "(method 11 res-lump)", + "(method 12 res-lump)", + "(method 7 texture-page)" + ], + + // this provides a hint to the decompiler that these functions will have a lot of inline assembly. + // currently it just leaves pcpyld as an asm op. + "hint_inline_assembly_functions": ["matrix-transpose!"], + + "asm_functions_by_name": [ + // gcommon + "quad-copy!", + + // gkernel + "(method 11 cpu-thread)", + "throw", + "return-from-thread", + "return-from-thread-dead", + "reset-and-call", + "(method 10 cpu-thread)", + "(method 0 catch-frame)", + "throw-dispatch", + "set-to-run-bootstrap", + "run-function-in-process", // not asm, but it uses the stack. + + // pskernel + "return-from-exception", // F: eret + "kernel-read-function", // F: delay slot tricks + "kernel-write-function", // F: delay slot tricks + "kernel-copy-function", + "kernel-check-hardwired-addresses", + + // math + "rand-uint31-gen", + + // bounding box + "(method 9 bounding-box)", // F: asm branching + "(method 14 bounding-box)", + + // matrix + "(method 9 matrix)", // F: asm branching + "matrix-axis-sin-cos!", // F: asm branching + "matrix-axis-sin-cos-vu!", + + // geometry + "circle-circle-xz-intersect", // F: asm branching + + // trigonometry + "exp", // BUG: cfg is wrong. + "atan0", // P: manual use of stack + "sincos!", // P: manual use of stack + "sincos-rad!", + + // dma-h + "dma-count-until-done", // F: asm branching + "dma-sync-with-count", // F: asm branching + "dma-send-no-scratch", // F: asm branching + "dma-sync-fast", + + // dma + "symlink3", // F: asm branching + "symlink2", // F: asm branching + "dma-sync-hang", + + // display + "vblank-handler", // F: weird asm for interrupt handler + "vif1-handler", // F: weird asm for interrupt handler + "vif1-handler-debug", + + // vector + "vector=", // asm branching + + // collide-mesh-h + "(method 11 collide-mesh-cache)", + + // collide-func + "moving-sphere-triangle-intersect", // P: weird branching + "collide-do-primitives", // P: asm branching + + // joint + "calc-animation-from-spr", // F: asm branching + "decompress-frame-data-pair-to-accumulator", // P: asm calling + "decompress-frame-data-to-accumulator", // P: asm calling + "decompress-fixed-data-to-accumulator", // P: asm calling + "normalize-frame-quaternions", // F: asm branching, return + "clear-frame-accumulator", // F: asm branching + "cspace<-parented-transformq-joint!", + + // sprite + + // merc-blend-shape + "setup-blerc-chains-for-one-fragment", // F: asm branching + "merc-dma-chain-to-spr", // F: asm branching + "blerc-a-fragment", + + // ripple + "ripple-matrix-scale", + "ripple-apply-wave-table", + "ripple-create-wave-table", + "ripple-execute-init", + + // bones + "draw-bones-hud", + "draw-bones", + "draw-bones-check-longest-edge-asm", + "draw-bones-merc", + "bones-mtx-calc-execute", + "bones-mtx-calc", + "texscroll-execute", + + // generic-effect + "generic-debug-light-proc", + "generic-none-dma-wait", + "generic-copy-vtx-dclr-dtex", + "generic-light", + "generic-envmap-only-proc", + "generic-no-light", + "generic-no-light+envmap", + "generic-no-light-dproc", + "generic-no-light-dproc-only", + "generic-no-light-proc", + "generic-interp-dproc", + "generic-envmap-dproc", + "generic-prepare-dma-single", + "generic-prepare-dma-double", + "generic-envmap-proc", + "generic-light-proc", + "generic-dma-from-spr", + "upload-vu0-program", + + // generic-merc + "generic-merc-execute-all", + "generic-merc-execute-asm", // CFG + "high-speed-reject", + "mercneric-convert", + "mercneric-bittable-asm", + "mercneric-shader-asm", + "mercneric-matrix-asm", + "generic-merc-init-asm", + + // generic-tie + "generic-tie-convert", + "generic-tie-convert-proc", + "generic-tie-upload-next", + "generic-tie-decompress", + "generic-tie-dma-to-spad-sync", + + // shadow-cpu + "shadow-execute", + "shadow-add-double-edges", + "shadow-add-double-tris", + "shadow-add-single-edges", + "shadow-add-facing-single-tris", + "shadow-add-verts", + "shadow-find-double-edges", + "shadow-find-facing-double-tris", + "shadow-find-single-edges", + "shadow-find-facing-single-tris", + "shadow-scissor-top", + "shadow-scissor-edges", + "shadow-calc-dual-verts", + + // background + "background-upload-vu0", + + // draw-node + "draw-node-cull", + + // shrubbery + "test-func", + "draw-inline-array-instance-shrub", + + // tfrag + "stats-tfrag-asm", + "draw-inline-array-tfrag-near", + "draw-inline-array-tfrag", + + // tie-methods + "draw-inline-array-prototype-tie-near-asm", + "draw-inline-array-prototype-tie-asm", + "draw-inline-array-prototype-tie-generic-asm", + "draw-inline-array-instance-tie", + + // sparticle-launcher + "sp-init-fields!", + + // sparticle + "memcpy", + "sp-process-block-3d", + "sp-process-block-2d", + "sp-launch-particles-var", + "particle-adgif", + "sp-init-fields!", + + // time-of-day + "time-of-day-interp-colors-scratch", + "time-of-day-interp-colors", + + // sky-tng + "clip-polygon-against-negative-hyperplane", + "clip-polygon-against-positive-hyperplane", + "draw-large-polygon", + + // load-boundary + "render-boundary-tri", + "render-boundary-quad", + "draw-boundary-polygon", + + // collide-probe + "collide-probe-instance-tie", // CFG + "collide-probe-node", // CFG + + // collide-edge-grab + "(method 13 collide-edge-work)", // CFG + "(method 17 collide-edge-work)", // CFG + "(method 15 collide-edge-work)", // CFG + "(method 16 collide-edge-work)", // CFG + "(method 9 edge-grab-info)", // CFG + "(method 18 collide-edge-work)", // CFG + "(method 10 collide-edge-hold-list)", // CFG + + // collide-shape + "(method 15 collide-shape-prim-mesh)", // CFG + "(method 15 collide-shape-prim-sphere)", // CFG + "(method 16 collide-shape-prim)", // CFG + "(method 15 collide-shape-prim-group)", // CFG + "(method 18 collide-shape-prim-sphere)", + "(method 23 collide-shape-prim-sphere)", // CFG + "(method 23 collide-shape-prim-mesh)", // BUG - crash in variable pass + "(method 24 collide-shape-prim)", // CFG + "(method 23 collide-shape-prim-group)", // CFG + "(method 42 collide-shape)", // CFG + + // process-drawable BUG + "cspace-inspect-tree", + "(method 19 process-drawable)", + + // ambient + "ambient-inspect", + + // target BUG + "target-falling-anim-trans", // CFG resolution + + // target2 BUG + "look-for-points-of-interest", // Failed to split nested sc - looks like dead code to me + + // drawable-tree + "(method 16 drawable-tree)", + + // collide-cache + "(method 10 collide-puss-work)", // CFG + "(method 9 collide-puss-work)", // decompiler crash + "(method 19 collide-cache)", // decompiler crash + "(method 10 collide-cache-prim)", // CFG + "(method 9 collide-cache-prim)", // CFG + "(method 30 collide-cache)", // unsupported asm - c.le.s + "(method 13 collide-shape-prim-group)", // CFG + "(method 13 collide-shape-prim-mesh)", // CFG + "(method 14 collide-shape-prim-group)", // CFG + "(method 14 collide-shape-prim-mesh)", // CFG + "(method 12 collide-shape-prim-group)", // CFG + "(method 12 collide-shape-prim-mesh)", // CFG + "(method 27 collide-cache)", // CFG + "(method 14 collide-cache)", // CFG + "(method 28 collide-cache)", // CFG + "(method 26 collide-cache)", // CFG + "(method 21 collide-cache)", // CFG + "(method 32 collide-cache)", // CFG + + // memory-usage BUG + //"(method 14 level)", + + // navigate BUG + "(method 32 nav-control)", + + // ocean + "draw-large-polygon-ocean", // CFG + + // ocean-vu0 + "ocean-generate-verts", // crash + "ocean-interp-wave", + + // ropebridge BUG + "(method 27 ropebridge)", + + // all unchecked and in level DGO code + "(anon-function 21 plant-boss)", // CFG + // "(anon-function 10 ice-cube)", + // "(anon-function 15 ice-cube)", + "mistycannon-find-best-solution", + "target-flut-falling-anim-trans", // CFG failure + "kermit-check-to-hit-player?", + "(anon-function 36 mistycannon)", + "(anon-function 2 target-tube)", + "(anon-function 5 orbit-plat)", + "(anon-function 2 ogreboss)" + + ], + + // these functions use pairs and the decompiler + // will be less picky about types related to pairs. + "pair_functions_by_name": [ + "ref", + "last", + "member", + "nmember", + "assoc", + "assoce", + "append!", + "delete!", + "delete-car!", + "insert-cons!", + "sort", + "unload-package", + "(method 4 pair)", + "nassoc", + "nassoce", + "lookup-level-info", + "(method 21 level-group)", + "(method 12 level)", + "update-sound-banks", + "(method 16 level-group)", + "bg", + "(method 18 game-info)", + "debug-menu-context-default-selection", + "debug-menu-rebuild", + "debug-menu-func-decode", + "debug-menu-make-from-template", + "debug-menu-render", + "debug-menu-context-select-next-or-prev-item", + "debug-menu-context-select-new-item", + "debug-menu-send-msg", + "debug-menu-find-from-template", + "build-continue-menu", + "(method 8 process-tree)", + "(method 16 load-state)", + "(method 15 load-state)", + "build-continue-menu", + "entity-remap-names", + "(method 21 swamp-rat-nest-dummy-a)", + "(method 21 swamp-rat-nest-dummy-b)", + "(method 21 swamp-rat-nest-dummy-c)", + "(method 27 battlecontroller)", + "load-boundary-from-template", + "command-get-time", + "command-get-param", + "command-get-quoted-param", + "command-get-trans", + "command-get-camera", + "(method 14 camera-tracker)", + "(enter billy-playing)", + "(code target-continue)", + "next-level" + ], + + // If format is used with the wrong number of arguments, + // it will often mess up the decompilation, as the decompiler assumes + // that they used the correct number. This will override the decompiler's + // automatic detection. + "bad_format_strings": { + "ERROR: dma tag has data in reserved bits ~X~%": 0, + "#: value of symbol ~A in task-controls is not a task-control~%": 0, + "~0K~10,'-S--~5,'-DK-of-~5,'-DK--~5,'-DK-of-~5,'-DK--": 5, + " bsp ~192H~5DK ~280Hdebug~456H~5DK~%": 2, + " bsp-leaf-vis-iop ~192H~5DK~%": 1, + " bsp-leaf-vis-adj ~192H~5DK~%": 1, + " level-code ~192H~5DK~%": 1, + " tfrag ~192H~5DK ~280Htfragment~456H~5DK~%": 2, + " tie-proto ~192H~5DK ~280Hsky~456H~5DK~%": 2, + " tie-instance ~192H~5DK ~280Htie-fragment~456H~5DK~%": 2, + " shrub-proto ~192H~5DK ~280Htie-near~456H~5DK~%": 2, + " shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%": 2, + " collision ~192H~5DK ~280Htie-generic~456H~5DK~%": 2, + " pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%": 2, + " pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%": 2, + " textures ~192H~5DK ~280Htextures~456H~5DK~%": 2, + " entity ~192H~5DK~%": 1, + " misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2, + "ERROR: ~A in spool anim loop for ~A ~D, but not loaded.~": 3, + "~0k~5d/~d ~6d/~d ~6d/~d ": 6, + "~0k~s~%": 1, + "money ~A was killed in pickup~%": 0 + }, + + "blocks_ending_in_asm_branch": { + "closest-pt-in-triangle": [17], + + // this one is all asm branches + "circle-circle-xz-intersect": [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + ], + + "find-knot-span": [0, 1, 2, 3, 5, 6, 7, 8, 9], + + "curve-evaluate!": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + + "(method 9 texture-page-dir)": [4, 5], + + "adgif-shader<-texture-with-update!": [0, 1], + + "display-loop": [44, 49, 66, 96], + + "load-game-text-info": [12, 13, 14, 16, 17, 18], + + "real-main-draw-hook": [75, 77], + + "(method 12 perf-stat)": [0], + "(method 11 perf-stat)": [0], + "raw-ray-sphere-intersect": [0, 1, 2, 3, 4, 5], + "ray-cylinder-intersect": [0, 1, 2, 3, 4, 5], + "ray-triangle-intersect": [0, 1, 2, 3, 4], + "bsp-camera-asm": [1, 2, 3], + "level-remap-texture": [2, 3, 4, 5, 6], + "start-perf-stat-collection": [26], + "end-perf-stat-collection": [0], + "sprite-draw-distorters": [4, 5], + "draw-string": [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189 + ], + "get-string-length": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 + ], + "unpack-comp-rle": [1, 3, 5, 6], + "(method 16 level)": [1, 5, 13, 14, 15, 19, 26, 53], + "unpack-comp-huf": [2, 4, 5, 6, 7, 8, 9], + "blerc-execute": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 + ], + "(method 11 fact-info-target)": [42], + "(anon-function 9 game-save)": [3, 4, 5, 6, 7, 8, 10], + //"(anon-function 9 game-save)":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], + "particle-adgif": [0, 1, 2, 3, 4, 5, 7], + "sp-launch-particles-var": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 + ], + "(method 11 sparticle-launch-control)": [27, 28, 35, 46, 48, 49, 77], + "upload-vis-bits": [0, 1, 2, 3, 4, 5, 6], + + "draw-drawable-tree-tfrag": [6, 8, 13, 15], + "draw-drawable-tree-trans-tfrag": [6, 8, 13, 15], + "draw-drawable-tree-dirt-tfrag": [6, 8, 13, 15], + "draw-drawable-tree-ice-tfrag": [6, 8, 13, 15], + + "birth-pickup-at-point": [0] + }, + + // Sometimes the game might use format strings that are fetched dynamically, + // for example using the game text lookup method + // Add information about those format instructions here. + // e.g. "function-name":[[op, argc], [op, argc], ...] + // where "op" is the op number for the call to format. + "dynamic_format_arg_counts": { + "(method 35 progress)": [ + [44, 1], + [92, 1] + ], + "(method 49 progress)": [[35, 1]], + "(method 37 progress)": [[41, 1]], + "(method 38 progress)": [[106, 1]], + "(method 39 progress)": [[41, 1]], + "(method 41 progress)": [[73, 1]], + "(method 42 progress)": [[41, 1]], + "(method 43 progress)": [ + [51, 1], + [94, 1] + ], + "": [] + }, + + "mips2c_functions_by_name": [ + "sp-init-fields!", + "particle-adgif", + "sp-launch-particles-var", + "sp-process-block-2d", + "sp-process-block-3d", + "draw-large-polygon", + "clip-polygon-against-positive-hyperplane", + "clip-polygon-against-negative-hyperplane", + "render-sky-quad", + "render-sky-tri", + "init-sky-regs", + "set-tex-offset", + "adgif-shader<-texture-with-update!", + "init-boundary-regs", + "draw-boundary-polygon", + "render-boundary-quad", + "render-boundary-tri", + "draw-inline-array-tfrag", + "stats-tfrag-asm", + "time-of-day-interp-colors-scratch" + ], + + // there are some missing textures. I don't know what the game actually does here. + // the format for entries is [level, tpage, index] + "missing_textures": [ + ["finalboss", 1419, 3] + ] +} + + diff --git a/decompiler/config/jak2/inputs.jsonc b/decompiler/config/jak2/inputs.jsonc new file mode 100644 index 0000000000..db79427b11 --- /dev/null +++ b/decompiler/config/jak2/inputs.jsonc @@ -0,0 +1,187 @@ +{ + ////////////////////// + // INPUT FILES + ////////////////////// + + // input is GOAL object files, possibly in containers. + // most objects are part of CGO/DGO files (both go in dgo_names). This includes levels and the engine + // the DGOs will be processed in this order. Usually it's best to have KERNEL, ENGINE, then the levels when + // you want to run on the entire game. + "dgo_names": [/* + "CGO/ART.CGO", + "CGO/KERNEL.CGO", + "CGO/ENGINE.CGO", + "CGO/GAME.CGO", + "CGO/COMMON.CGO", + "DGO/LWIDEB.DGO", + "DGO/LMEETBRT.DGO", + "DGO/CTA.DGO", + "DGO/PALOUT.DGO", + "DGO/STD.DGO", + "DGO/FOR.DGO", + "DGO/CASEXT.DGO", + "DGO/HIDEOUT.DGO", + "DGO/LWIDESTA.DGO", + "DGO/LRACELIT.DGO", + "DGO/CTB.DGO", + "DGO/KIOSK.DGO", + "DGO/DG1.DGO", + "DGO/FEB.DGO", + "DGO/DMI.DGO", + "DGO/ORACLE.DGO", + "DGO/LERLTESS.DGO", + "DGO/DRI.DGO", + "DGO/LBRNERMK.DGO", + "DGO/LRACECF.DGO", + "DGO/CTC.DGO", + "DGO/LTHRNOUT.DGO", + "DGO/FRA.DGO", + "DGO/LGARCSTA.DGO", + "DGO/MTN.DGO", + "DGO/INTROCST.DGO", + "DGO/DRB.DGO", + "DGO/ATE.DGO", + "DGO/LERROL.DGO", + "DGO/LTRNYSAM.DGO", + "DGO/LOUTCSTB.DGO", + "DGO/LASHTHRN.DGO", + "DGO/TOC.DGO", + "DGO/CFB.DGO", + "DGO/CAB.DGO", + "DGO/STC.DGO", + "DGO/STR.DGO", + "DGO/ATO.DGO", + "DGO/SEB.DGO", + "DGO/LPRSNCST.DGO", + "DGO/SWB.DGO", + "DGO/LPOWER.DGO", + "DGO/FOB.DGO", + "DGO/CIB.DGO", + "DGO/LSHUTTLE.DGO", + "DGO/LJAKDAX.DGO", + "DGO/FORDUMPC.DGO", + "DGO/LTRNTESS.DGO", + "DGO/TBO.DGO", + "DGO/THR.DGO", + "DGO/PRI.DGO", + "DGO/LKIDDOGE.DGO", + "DGO/NESTT.DGO", + "DGO/LWIDEC.DGO", + "DGO/SAG.DGO", + "DGO/NEB.DGO", + "DGO/COB.DGO", + "DGO/LBOMBBOT.DGO", + "DGO/DEMO.DGO", + "DGO/LRACEDF.DGO", + "DGO/LERLCHAL.DGO", + "DGO/LHIPOUT.DGO", + "DGO/OUTROCST.DGO", + "DGO/NES.DGO", + "DGO/PAR.DGO", + "DGO/LERBRNGD.DGO", + "DGO/MTX.DGO", + "DGO/FDA.DGO", + "DGO/LKEIRIFT.DGO", + "DGO/LWHACK.DGO", + "DGO/LJKDXASH.DGO", + "DGO/CAS.DGO", + "DGO/COA.DGO", + "DGO/LTESS.DGO", + "DGO/CFA.DGO", + "DGO/TOMBEXT.DGO", + "DGO/LCGUARD.DGO", + "DGO/TOE.DGO", + "DGO/PALBOSS.DGO", + "DGO/FRB.DGO", + "DGO/PAE.DGO", + "DGO/TITLE.DGO", + "DGO/FORDUMPD.DGO", + "DGO/D3A.DGO", + "DGO/DRILLMTN.DGO", + "DGO/PAC.DGO", + "DGO/LTENTOB.DGO", + "DGO/LRACEBF.DGO", + "DGO/LPROTECT.DGO", + "DGO/FEA.DGO", + "DGO/ONINTENT.DGO", + "DGO/STA.DGO", + "DGO/CGC.DGO", + "DGO/CMA.DGO", + "DGO/FDB.DGO", + "DGO/SKA.DGO", + "DGO/LTRNKRKD.DGO", + "DGO/CIA.DGO", + "DGO/TOB.DGO", + "DGO/LRACEDB.DGO", + "DGO/LDJAKBRN.DGO", + "DGO/TOA.DGO", + "DGO/STADBLMP.DGO", + "DGO/UND.DGO", + "DGO/LYSKDCD.DGO", + "DGO/HALFPIPE.DGO", + "DGO/LSAMERGD.DGO", + "DGO/PAS.DGO", + "DGO/LBBUSH.DGO", + "DGO/LPACKAGE.DGO", + "DGO/LINTCSTB.DGO", + "DGO/LPORTRUN.DGO", + "DGO/LASHGRD.DGO", + "DGO/CGB.DGO", + "DGO/D3B.DGO", + "DGO/STB.DGO", + "DGO/GARAGE.DGO", + "DGO/PORTWALL.DGO", + "DGO/LHELLDOG.DGO", + "DGO/SWE.DGO", + "DGO/LRACECB.DGO", + "DGO/GGA.DGO", + "DGO/TOD.DGO", + "DGO/MCN.DGO", + "DGO/SEW.DGO", + "DGO/VIN.DGO", + "DGO/CGA.DGO", + "DGO/CMB.DGO", + "DGO/LGUARD.DGO", + "DGO/CPA.DGO", + "DGO/LCITYLOW.DGO", + "DGO/LTENTOUT.DGO", + "DGO/UNB.DGO", + "DGO/CPO.DGO", + "DGO/CAP.DGO", + "DGO/CWI.DGO", + "DGO/CTYKORA.DGO", + "DGO/RUI.DGO", + "DGO/LSACK.DGO", + "DGO/CTYASHA.DGO", + "DGO/LPRTRACE.DGO", + "DGO/LWIDEA.DGO", + "DGO/HIPHOG.DGO", + "DGO/LSMYSBRT.DGO", + "DGO/LRACEBB.DGO", + "DGO/CASCITY.DGO", + "DGO/LYSAMSAM.DGO", + "DGO/VI1.DGO"*/ + ], + + // some objects are part of STR files (streaming data). In Jak 1 this is just animations + "str_file_names": [ + ], + + // some objects are directly stored as files on the DVD. This is just text files. + "object_file_names": [ + "TEXT/0COMMON.TXT", + "TEXT/1COMMON.TXT", + "TEXT/2COMMON.TXT", + "TEXT/3COMMON.TXT", + "TEXT/4COMMON.TXT", + "TEXT/5COMMON.TXT", + "TEXT/6COMMON.TXT", + "TEXT/7COMMON.TXT" + ], + + // uncomment the next line to extract audio to wave files. + //"audio_dir_file_name": "jak1/VAG", + "audio_dir_file_name": "", + + "streamed_audio_file_names": ["VAGWAD.ENG", "VAGWAD.JAP"] +} diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc new file mode 100644 index 0000000000..64cd24a635 --- /dev/null +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -0,0 +1,5045 @@ +{ + "run-function-in-process": [ + [16, ["array", "uint64", 6]], + [64, "catch-frame"] + ], + + "matrixp*!": [[16, "matrix"]], + + "vector3s-matrix*!": [[16, "vector"]], + + "vector3s-rotate*!": [[16, "vector"]], + + "matrix-rotate-zyx!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-rotate-xyz!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-rotate-zxy!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-rotate-yxz!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-rotate-yzx!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-rotate-yxy!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "matrix-rotate-yx!": [[16, "matrix"]], + "transform-matrix-calc!": [ + [16, "matrix"], + [80, "matrix"] + ], + "transform-matrix-parent-calc!": [ + [16, "matrix"], + [80, "matrix"] + ], + "matrix-with-scale->quaternion": [[16, "matrix"]], + "quaternion-exp!": [[16, "vector"]], + "quaternion-slerp!": [[16, "vector"]], + "quaternion-zxy!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "vector-x-quaternion!": [[16, "matrix"]], + "vector-y-quaternion!": [[16, "matrix"]], + "vector-z-quaternion!": [[16, "matrix"]], + "quaternion-y-angle": [[16, "vector"]], + "quaternion-rotate-local-x!": [[16, "quaternion"]], + "quaternion-rotate-local-y!": [[16, "quaternion"]], + "quaternion-rotate-local-z!": [[16, "quaternion"]], + "quaternion-rotate-y!": [[16, "quaternion"]], + "quaternion-rotate-x!": [ + [16, "quaternion"], + [32, "vector"] + ], + "quaternion-rotate-z!": [ + [16, "quaternion"], + [32, "vector"] + ], + "quaternion-delta-y": [ + [16, "vector"], + [32, "vector"] + ], + "quaternion-rotate-y-to-vector!": [ + [16, "quaternion"], + [32, "vector"], + [48, "quaternion"] + ], + "quaternion-xz-angle": [ + [16, "matrix"], + [80, "vector"] + ], + "vector-rotate-y!": [ + [16, "quaternion"], + [32, "matrix"] + ], + "eul->matrix": [[16, "vector"]], + "eul->quat": [[16, "matrix"]], + "quat->eul": [[16, "matrix"]], + "vector-line-distance": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "vector-line-distance-point!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "forward-up-nopitch->inv-matrix": [[16, "vector"]], + "forward-up-nopitch->quaternion": [[16, "matrix"]], + "forward-up->quaternion": [ + [16, "matrix"], + [80, "vector"] + ], + "quaternion-from-two-vectors!": [[16, "vector"]], + "quaternion-from-two-vectors-max-angle!": [[16, "vector"]], + "matrix-from-two-vectors!": [[16, "vector"]], + "matrix-from-two-vectors-max-angle!": [[16, "vector"]], + "matrix-from-two-vectors-max-angle-partial!": [[16, "vector"]], + "matrix-from-two-vectors-partial-linear!": [[16, "vector"]], + "matrix-remove-z-rot": [ + [16, "vector"], + [32, "matrix"] + ], + "matrix-rot-diff!": [ + [16, "quaternion"], + [32, "quaternion"], + [48, "quaternion"] + ], + "quaternion-seek": [ + [16, "matrix"], + [80, "matrix"], + [144, "quaternion"] + ], + "vector-deg-seek": [[16, "matrix"]], + "vector-deg-slerp": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"] + ], + "circle-test": [ + [16, "sphere"], + [32, "sphere"], + [48, "vector"], + [64, "vector"] + ], + "move-target-from-pad": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + "draw-sprite2d-xy": [[16, "draw-context"]], + "screen-gradient": [[16, "draw-context"]], + "(method 10 oscillating-vector)": [[16, "vector"]], + "show-mc-info": [[16, "mc-slot-info"]], + "update-mood-erase-color2": [[16, "mood-fog"]], + "make-light-kit": [[16, "matrix"]], + "matrix<-parented-transformq!": [[16, "vector"]], + "(method 20 trsqv)": [[16, "vector"]], + "(method 19 trsqv)": [[16, "vector"]], + "(method 17 trsqv)": [ + [16, "quaternion"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"] + ], + "(method 25 trsqv)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "(method 16 trsqv)": [ + [16, "matrix"], + [80, "matrix"] + ], + "(method 14 trsqv)": [[16, "vector"]], + "(method 13 trsqv)": [[16, "vector"]], + "(method 12 trsqv)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 11 trsqv)": [[16, "vector"]], + "(method 10 trsqv)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 23 trsqv)": [[16, "vector"]], + "(method 24 trsqv)": [[16, "vector"]], + + "vector-sincos!": [[16, "vector"]], + + "init-for-transform": [ + [16, "matrix"], + [80, "matrix"], + [144, "vector4s-3"], + [192, "vector"], + [208, "vector4s-3"] + ], + "string->sound-name": [[16, "qword"]], + "(method 15 trajectory)": [ + [16, "vector"], + [32, "vector"] + ], + "ripple-add-debug-sphere": [[16, "vector"]], + "camera-teleport-to-entity": [ + [16, "transformq"], + [64, "event-message-block"] + ], + "(method 10 cam-vector-seeker)": [[16, "vector"]], + "joint-mod-look-at-handler": [ + [16, "vector"], + [32, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + "joint-mod-world-look-at-handler": [ + [16, "vector"], + [32, "vector"], + [64, "vector"], + [80, "matrix"], + [144, "vector"], + [160, "vector"], + [176, "matrix"] + ], + "joint-mod-rotate-handler": [ + [16, "quaternion"], + [32, "quaternion"], + [48, "quaternion"] + ], + "joint-mod-wheel-callback": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "draw-end-credits": [[16, "font-context"]], + "draw-title-credits": [[16, "font-context"]], + "moving-sphere-sphere-intersect": [[16, "vector"]], + "moving-sphere-moving-sphere-intersect": [ + [16, "vector"], + [32, "vector"] + ], + "(method 9 cylinder-flat)": [ + [16, "vector"], + [32, "vector"], + [48, "cylinder-flat-verts"], + [208, "cylinder-flat-verts"], + [368, "matrix"], + [432, "vector"] + ], + "(method 9 cylinder)": [ + [16, "vector"], + [32, "vector"], + [48, "cylinder-verts"], + [432, "cylinder-verts"], + [816, "matrix"], + [880, "matrix"] + ], + "ray-arbitrary-circle-intersect": [ + [16, "vector"], + [32, "vector"] + ], + "(method 10 cylinder-flat)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 10 cylinder)": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-sphere-from-table": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "make-debug-sphere-table": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "(method 20 actor-link-info)": [[16, "event-message-block"]], + "(method 21 actor-link-info)": [[16, "event-message-block"]], + "(method 23 actor-link-info)": [[16, "event-message-block"]], + "(method 24 actor-link-info)": [[16, "event-message-block"]], + "internal-draw-debug-line": [ + [16, "vector4w-2"], + [48, "vector4w-2"] + ], + "internal-draw-debug-text-3d": [ + [16, "vector4w"], + [32, "font-context"] + ], + "add-debug-triangle-normal": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-flat-triangle": [ + [16, "vector4w-3"], + [64, "vector4w-3"] + ], + "add-debug-point": [[16, "vector4w-2"]], + "add-debug-line2d": [ + [16, "vector4w"], + [32, "vector4w"] + ], + "add-debug-box": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-x": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-sphere-with-transform": [[16, "vector"]], + "add-debug-circle": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-vector": [[16, "vector"]], + "add-debug-yrot-vector": [[16, "vector"]], + "add-debug-arc": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-curve": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-points": [[16, "vector"]], + "add-debug-light": [[16, "vector"]], + "dma-timeout-cam": [ + [16, "vector"], + [32, "matrix"] + ], + + "(method 18 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "tracking-spline-sampler"] + ], + + "draw-ocean-transition": [[16, "sphere"]], + + "dm-cam-mode-func": [[16, "event-message-block"]], + "ocean-trans-add-upload-table": [[16, "vector"]], + + "dm-cam-settings-func": [[16, "event-message-block"]], + + "dm-cam-render-float": [[16, "event-message-block"]], + + "debug-create-cam-restore": [[16, "euler-angles"]], + + "dm-task-resolution": [[16, "event-message-block"]], + + "dm-task-get-money": [[16, "event-message-block"]], + + "dm-give-all-cells": [[16, "event-message-block"]], + + "dm-give-cell": [[16, "event-message-block"]], + + "(anon-function 13 default-menu)": [[16, "event-message-block"]], + + "(anon-function 12 default-menu)": [[16, "event-message-block"]], + + "(anon-function 11 default-menu)": [[16, "event-message-block"]], + + "(method 22 level)": [[16, "event-message-block"]], + "(method 9 level)": [[16, "event-message-block"]], + "(method 10 load-state)": [[16, "event-message-block"]], + "cam-slave-get-rot": [[16, "quaternion"]], + + "draw-joint-spheres": [[16, "vector"]], + "(method 16 process-drawable)": [ + [16, "matrix"], + [80, "matrix"], + [144, "vector"], + [160, "vector"] + ], + "(anon-function 494 task-control)": [[16, "event-message-block"]], + "(anon-function 493 task-control)": [[16, "event-message-block"]], + "(anon-function 480 task-control)": [[16, "event-message-block"]], + "(anon-function 477 task-control)": [[16, "event-message-block"]], + "(anon-function 476 task-control)": [[16, "event-message-block"]], + "(anon-function 475 task-control)": [[16, "event-message-block"]], + "(anon-function 474 task-control)": [[16, "event-message-block"]], + "(anon-function 455 task-control)": [[16, "event-message-block"]], + "(anon-function 445 task-control)": [[16, "event-message-block"]], + "(anon-function 435 task-control)": [[16, "event-message-block"]], + "(anon-function 426 task-control)": [[16, "event-message-block"]], + "(anon-function 425 task-control)": [[16, "event-message-block"]], + "(anon-function 415 task-control)": [[16, "event-message-block"]], + "(anon-function 414 task-control)": [[16, "event-message-block"]], + "(anon-function 403 task-control)": [[16, "event-message-block"]], + "(anon-function 400 task-control)": [[16, "event-message-block"]], + "(anon-function 393 task-control)": [[16, "event-message-block"]], + "(anon-function 390 task-control)": [[16, "event-message-block"]], + "(anon-function 383 task-control)": [[16, "event-message-block"]], + "(anon-function 380 task-control)": [[16, "event-message-block"]], + "(anon-function 369 task-control)": [[16, "event-message-block"]], + "(anon-function 368 task-control)": [[16, "event-message-block"]], + "(anon-function 367 task-control)": [[16, "event-message-block"]], + "(anon-function 366 task-control)": [[16, "event-message-block"]], + "(anon-function 365 task-control)": [[16, "event-message-block"]], + "(anon-function 364 task-control)": [[16, "event-message-block"]], + "(anon-function 363 task-control)": [[16, "event-message-block"]], + "(anon-function 362 task-control)": [[16, "event-message-block"]], + "(anon-function 337 task-control)": [[16, "event-message-block"]], + "(anon-function 336 task-control)": [[16, "event-message-block"]], + "(anon-function 286 task-control)": [[16, "event-message-block"]], + "(anon-function 227 task-control)": [[16, "event-message-block"]], + "(anon-function 38 task-control)": [[16, "event-message-block"]], + "(anon-function 28 task-control)": [[16, "event-message-block"]], + "(method 10 border-plane)": [[16, "vector"]], + "(method 9 game-info)": [[16, "event-message-block"]], + "(method 9 continue-point)": [[16, "vector"]], + "(method 9 game-save)": [[16, "file-stream"]], + "(method 10 game-save)": [[16, "file-stream"]], + "vector-vector-deg-slerp!": [ + [16, "vector"], + [32, "vector"], + [48, "quaternion"], + [64, "quaternion"], + [80, "quaternion"], + [96, "vector"] + ], + "closest-pt-in-triangle": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "vector-circle-tangent-new": [ + [16, "sphere"], + [32, "vector"], + [48, "vector"] + ], + "vector-circle-tangent": [ + [16, "sphere"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "vector-plane-distance": [[16, "vector"]], + "curve-length": [ + [16, "vector"], + [32, "vector"] + ], + "curve-closest-point": [ + [16, "vector"], + [32, "vector"] + ], + "(method 27 seagull)": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-air-box": [ + [16, "vector"], + [32, "vector"] + ], + "mem-size": [[16, "memory-usage-block"]], + "display-loop": [[16, "sphere"]], + "(method 14 curve-control)": [[16, "vector"]], + "(method 19 path-control)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "progress-allowed?": [[16, "event-message-block"]], + "(method 9 align-control)": [ + [16, "matrix"], + [80, "quaternion"] + ], + "(method 10 align-control)": [[16, "vector"]], + "(method 15 load-state)": [ + [16, "event-message-block"], + [96, "event-message-block"] + ], + + "(method 43 farmer)": [[16, "vector"]], + + "yakow-post": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + + "anim-tester-save-object-seqs": [[16, "file-stream"]], + "anim-test-obj-list-handler": [[16, "event-message-block"]], + "anim-test-anim-list-handler": [[16, "event-message-block"]], + "anim-test-sequence-list-handler": [[16, "event-message-block"]], + "anim-test-edit-seq-insert-item": [[16, "event-message-block"]], + "anim-test-edit-sequence-list-handler": [ + [112, "event-message-block"], + [16, "font-context"] + ], + "anim-tester-add-newobj": [[16, "event-message-block"]], + "anim-tester-start": [[16, "event-message-block"]], + "anim-tester-add-sequence": [[16, "event-message-block"]], + + "instance-tfragment-add-debug-sphere": [[16, "vector"]], + + "cam-state-from-entity": [[16, "curve"]], + + "(method 9 cam-index)": [[16, "vector"]], + + "(method 10 cam-index)": [[16, "vector"]], + + "(method 15 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "tracking-point"] + ], + "(method 16 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "vector"] + ], + "(method 20 tracking-spline)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 21 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "vector"] + ], + "(method 22 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "vector"] + ], + "cam-slave-init": [[16, "event-message-block"]], + "cam-curve-pos": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "cam-calc-follow!": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"] + ], + "mat-remove-z-rot": [ + [16, "vector"], + [32, "matrix"] + ], + "slave-matrix-blend-2": [ + [16, "vector"], + [32, "quaternion"], + [48, "quaternion"], + [64, "quaternion"] + ], + "vector-into-frustum-nosmooth!": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"] + ], + "slave-set-rotation!": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"], + [112, "matrix"], + [176, "vector"] + ], + "v-slrp2!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"], + [128, "vector"] + ], + "v-slrp3!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"], + [128, "vector"] + ], + + "(code cam-combiner-active)": [ + [16, "vector"], + [32, "matrix"], + [80, "vector"], + [96, "matrix"] + ], + "cam-master-init": [ + [16, "vector"], + [32, "vector"] + ], + "plane-from-points": [[16, "vector"]], + "update-view-planes": [ + [16, "view-frustum"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + "move-camera-from-pad": [[16, "vector"]], + "cam-free-floating-move": [[16, "camera-free-floating-move-info"]], + "update-camera": [ + [16, "vector"], + [32, "quaternion"], + [48, "vector"] + ], + + "ocean-make-trans-camera-masks": [ + [16, "vector"], + [32, "vector"] + ], + + "update-mood-prt-color": [[16, "vector"]], + + "update-mood-swamp": [[16, "vector"]], + + "update-mood-village1": [[16, "vector"]], + + "update-mood-maincave": [[16, "vector"]], + + "update-mood-ogre": [[16, "vector"]], + + "update-mood-finalboss": [ + [16, "vector"], + [32, "vector"] + ], + + "update-mood-darkcave": [ + [16, "vector"], + [32, "vector"] + ], + + "update-mood-citadel": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + + "update-mood-jungleb": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "update-mood-sunken": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "update-mood-village2": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "update-mood-rolling": [ + [16, "vector"] // TODO - really not sure about this one + ], + + "update-mood-village3": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + + "ocean-transition-check": [[16, "vector"]], + + "ocean-trans-add-upload-strip": [[16, "vector"]], + + "draw-ocean-transition-seams": [[16, "sphere"]], + + "(method 32 mayor)": [[16, "event-message-block"]], + + "(method 43 mayor)": [[16, "vector"]], + + "(method 10 tippy)": [[16, "vector"]], + + "compute-and-draw-shadow": [ + [16, "vector"], + [32, "vector"], + [48, "sparticle-cpuinfo"] // kinda a guess + ], + + "find-ground-and-draw-shadow": [ + [16, "vector"], + [32, "vector"], + [48, "collide-tri-result"] + ], + + "(method 20 collide-cache)": [[16, "vector"]], + + "(method 12 wobbler)": [[16, "vector"]], + + "(method 12 twister)": [[16, "matrix"]], + + "target-on-end-of-teetertotter?": [ + [16, "vector"], + [32, "vector"] + ], + + "(event teetertotter-launch)": [[16, "event-message-block"]], + + "(method 17 rigid-body)": [[16, "vector"]], + + "matrix-3x3-triple-transpose-product": [ + [16, "matrix"], + [80, "matrix"] + ], + + "(method 10 rigid-body)": [[16, "quaternion"]], + + "(method 13 rigid-body)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 16 rigid-body)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 14 rigid-body)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 18 rigid-body)": [[16, "vector"]], + + "(method 24 rigid-body-platform)": [[16, "vector"]], + + "(method 26 rigid-body-platform)": [[16, "vector"]], + + "(method 27 rigid-body-platform)": [[16, "vector"]], + + "(method 22 water-anim)": [[16, "vector"]], + + "(anon-function 9 plat-eco)": [[16, "event-message-block"]], + + "(trans plat-button-move-downward sunken-elevator)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(method 29 sunken-elevator)": [[16, "vector"]], + "(anon-function 0 title-obs)": [[16, "font-context"]], + + "print-game-text": [[16, "font-context"]], + + "draw-string-xy": [[16, "font-context"]], + + "(method 50 nav-enemy)": [[16, "vector"]], + + "nav-enemy-init-by-other": [[16, "vector"]], + + "nav-enemy-turn-to-face-point": [[16, "vector"]], + + "nav-enemy-facing-point?": [[16, "vector"]], + + "nav-enemy-jump-post": [[16, "vector"]], + + "(method 41 nav-enemy)": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-falling-post": [ + [16, "vector"] // TODO - check collide-shape-moving::62(type, vector, float) + ], + + "nav-enemy-death-post": [ + [16, "vector"] // TODO - check collide-shape-moving::62(type, vector, float) + ], + + "nav-enemy-jump-land-post": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-facing-direction?": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-initialize-custom-jump": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-flee-post": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter nav-enemy-jump-land nav-enemy)": [[16, "vector"]], + "(code nav-enemy-die nav-enemy)": [[16, "event-message-block"]], + "(enter nav-enemy-die nav-enemy)": [[16, "event-message-block"]], + "(trans nav-enemy-flee nav-enemy)": [[16, "event-message-block"]], + "(trans nav-enemy-patrol nav-enemy)": [[16, "event-message-block"]], + + "(method 73 nav-enemy)": [[16, "event-message-block"]], + + "(method 43 nav-enemy)": [[16, "event-message-block"]], + + "nav-enemy-send-attack": [[16, "event-message-block"]], + + "birth-pickup-at-point": [[16, "vector"]], + + "merc-blend-shape": [[16, ["array", "int16", 128]]], + + "(method 43 bird-lady)": [[16, "vector"]], + + "(method 32 bird-lady-beach)": [[16, "event-message-block"]], + + "muse-to-idle": [[16, "event-message-block"]], + + "(method 32 sculptor)": [[16, "event-message-block"]], + + "(method 43 sculptor)": [[16, "vector"]], + + "(method 32 geologist)": [[16, "event-message-block"]], + + "(method 43 geologist)": [[16, "vector"]], + + "(method 32 oracle)": [[16, "event-message-block"]], + + "(method 11 oracle)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(method 32 explorer)": [[16, "event-message-block"]], + + "(method 43 explorer)": [[16, "vector"]], + + "(method 32 assistant)": [[16, "event-message-block"]], + + "(method 43 assistant)": [[16, "vector"]], + + "(code idle assistant)": [ + [16, "vector"], + [32, "vector"] + ], + + "check-drop-level-assistant": [[16, "vector"]], + + "(method 32 sage)": [[16, "event-message-block"]], + + "(method 43 sage)": [[16, "vector"]], + + "(trans idle sage)": [[16, "event-message-block"]], + + "(method 32 gambler)": [[16, "event-message-block"]], + + "(method 43 gambler)": [[16, "vector"]], + + "(method 32 warrior)": [[16, "event-message-block"]], + + "(method 43 warrior)": [[16, "vector"]], + + "(exit play-anim warrior)": [[16, "event-message-block"]], + + "minershort-trans-hook": [[16, "vector"]], + + "(method 32 minershort)": [[16, "event-message-block"]], + + "(exit play-anim minershort)": [[16, "event-message-block"]], + + "(method 43 minershort)": [[16, "vector"]], + + "(method 33 progress)": [[16, "event-message-block"]], + "hide-progress-screen": [[16, "event-message-block"]], + "progress-init-by-other": [[16, "quaternion"]], + "(post progress-debug)": [[16, "font-context"]], + "(post progress-normal)": [[16, "font-context"]], + "(code progress-normal)": [[16, "event-message-block"]], + "fuel-cell-progress-hud-orbit-callback": [ + [16, "vector"], + [32, "vector"] + ], + "(method 24 progress)": [[16, "font-context"]], + "(method 25 progress)": [[16, "font-context"]], + "(method 26 progress)": [[16, "font-context"]], + "(method 17 progress)": [[16, "font-context"]], + "(method 28 progress)": [[16, "font-context"]], + "(method 27 progress)": [[16, "font-context"]], + + "(method 11 fact-info-target)": [[16, "event-message-block"]], + + "(anon-function 6 game-info)": [[16, "event-message-block"]], + + "(anon-function 8 game-info)": [[16, "event-message-block"]], + + "(method 24 game-info)": [[16, "scf-time"]], + + "auto-save-post": [ + [16, "font-context"], + [112, "font-context"] + ], + + "auto-save-init-by-other": [[16, "event-message-block"]], + + "(code error auto-save)": [[16, "event-message-block"]], + + "(code done auto-save)": [[16, "event-message-block"]], + + "update-time-of-day": [ + [16, "(array float)"], // TODO - broken! + [48, "vector"] + ], + + "check-drop-level-rain": [[16, "vector"]], + + "update-rain": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "sparticle-track-sun": [[16, "vector"]], + + "(method 16 target)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "vector-local+!": [[16, "vector"]], + + "move-forward": [ + [16, "vector"], + [32, "vector"] + ], + + "set-forward-vel": [[16, "vector"]], + + "delete-back-vel": [ + [16, "vector"], + [32, "vector"] + ], + + "set-side-vel": [[16, "vector"]], + + "build-conversions": [[16, "vector"]], + + "vector-turn-to": [ + [16, "vector"], + [32, "vector"] + ], + + "warp-vector-into-surface!": [[16, "matrix"]], + + "vector<-pad-in-surface!": [[16, "vector"]], + + "local-pad-angle": [ + [16, "vector"], + [32, "vector"] + ], + + "turn-around?": [ + [16, "vector"], + [32, "vector"] + ], + + "target-move-dist": [[16, "vector"]], + + "turn-to-vector": [ + [16, "vector"], + [32, "vector"] + ], + + "add-thrust": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + + "add-gravity": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "target-compute-slopes": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + + "do-rotations2": [ + [16, "vector"], + [32, "quaternion"], + [48, "quaternion"] + ], + + "level-setup": [[16, "event-message-block"]], + + "flag-setup": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"] + ], + + "target-compute-edge": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "target-compute-edge-rider": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "target-calc-camera-pos": [[16, "vector"]], + + "joint-points": [ + [16, "vector"], + [32, "vector"] + ], + + "target-real-post": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "target-swim-post": [[16, "vector"]], + + "target-no-stick-post": [[16, "vector"]], + + "target-no-move-post": [ + [16, "collide-edge-hold-list"] // a total guess + ], + + "target-slide-down-post": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"] + ], + + "target-no-ja-move-post": [ + [16, "collide-edge-hold-list"] // a total guess + ], + + "target-print-stats": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "target-compute-pole": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"], + [160, "vector"], + [176, "vector"], + [192, "vector"] + ], + + "can-exit-duck?": [ + [16, "collide-using-spheres-params"], + [48, ["inline-array", "sphere", 2]] + ], + + "(method 32 evilbro)": [[16, "event-message-block"]], + + "(exit play-anim evilbro)": [[16, "event-message-block"]], + + "(method 29 basebutton)": [[16, "event-message-block"]], + + "(code use warp-gate)": [[16, "event-message-block"]], + + "(trans use warp-gate)": [[16, "event-message-block"]], + + "(anon-function 1 basebutton)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(code target-warp-out)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "dm-anim-tester-func": [[16, "event-message-block"]], + + "update-actor-vis-box": [[16, "vector"]], + + "(method 14 level-group)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans falling beach-rock)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + + "(code falling beach-rock)": [[16, "event-message-block"]], + + "(method 11 beach-rock)": [[16, "vector"]], + + "birth-func-copy-target-y-rot": [[16, "matrix"]], + + "birth-func-ground-orient": [ + [16, "vector"], + [32, "collide-tri-result"], + [128, "vector"], + [144, "quaternion"], + [160, "quaternion"] + ], + + "birth-func-target-orient": [ + [32, "vector"], + [48, "vector"], // unused + [64, "quaternion"], + [80, "quaternion"] + ], + + "birth-func-vector-orient": [ + [16, "vector"], + [32, "vector"], // unused + [48, "quaternion"] + ], + + "part-tracker-track-target-joint": [[16, "vector"]], + + "process-drawable-burn-effect": [ + [16, "rgbaf"], + [32, "rgbaf"], + [48, "vector"] + ], + + "(anon-function 27 projectiles)": [[16, "vector"]], + + "projectile-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"], + [96, "vector"], + [112, "event-message-block"], + [192, "vector"], + [208, "vector"] + ], + + "(event projectile-moving projectile)": [[16, "event-message-block"]], + + "(code projectile-moving projectile)": [[16, "vector"]], + + "projectile-update-velocity-space-wars": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(code projectile-die projectile)": [[16, "event-message-block"]], + + "projectile-init-by-other": [[16, "collide-edge-hold-list"]], + + "(method 27 projectile-yellow)": [[16, "vector"]], + + "spawn-projectile-blue": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter plat-button-move-downward jungle-elevator)": [ + [16, "event-message-block"] + ], + + "(trans plat-button-move-downward jungle-elevator)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(method 29 jungle-elevator)": [[16, "vector"]], + + "(event bouncer-wait)": [[16, "event-message-block"]], + + "hopper-find-ground": [ + [16, "vector"], + [32, "collide-tri-result"] + ], + + "blocking-plane-init-by-other": [[16, "matrix"]], + + "evilsib-trans-hook-wait": [[16, "event-message-block"]], + + "(method 32 sequenceB)": [[16, "event-message-block"]], + + "(event play-anim sequenceB)": [[16, "event-message-block"]], + + "(exit play-anim sequenceB)": [[16, "event-message-block"]], + + "sequenceC-can-trans-hook-2": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "sequenceC-can-trans-hook": [[16, "event-message-block"]], + + "(method 32 sequenceC)": [[16, "event-message-block"]], + + "sequenceC-trans-hook": [[16, "vector"]], + + "(trans hidden assistant-firecanyon)": [[16, "font-context"]], + + "(method 32 sage-bluehut)": [[16, "event-message-block"]], + + "(exit play-anim sage-bluehut)": [[16, "event-message-block"]], + + "(method 43 sage-bluehut)": [[16, "vector"]], + + "(method 37 sharkey)": [[16, "vector"]], + + "(method 39 sharkey)": [[16, "vector"]], + + "sharkey-notice-player?": [[16, "event-message-block"]], + + "sharkey-move-to-attack-position": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code nav-enemy-attack sharkey)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(trans nav-enemy-chase sharkey)": [[16, "event-message-block"]], + + "(method 43 lurkercrab)": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter idle assistant-lavatube-end)": [[16, "event-message-block"]], + + "target-has-all-the-cells?": [[16, "event-message-block"]], + + "(code idle power-left)": [[16, "event-message-block"]], + + "(code jump powercellalt)": [[16, "trajectory"]], + + "(enter target-final-door)": [[16, "event-message-block"]], + + "(exit target-final-door)": [[16, "event-message-block"]], + + "(code target-final-door)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(method 43 aphid)": [[16, "event-message-block"]], + + "(code nav-enemy-give-up aphid)": [[16, "vector"]], + + "aphid-init-by-other": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "voicebox-track": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "crate-standard-event-handler": [[16, "event-message-block"]], + + "plat-trans": [[16, "vector"]], + + "(code door-closing eco-door)": [[16, "overlaps-others-params"]], + + "(code door-open eco-door)": [[16, "event-message-block"]], + + "(code door-opening eco-door)": [[16, "event-message-block"]], + + "(code door-closed eco-door)": [[16, "event-message-block"]], + + "(code plat-button-teleport-to-other-end plat-button)": [[16, "vector"]], + + "plat-button-camera-on": [[16, "event-message-block"]], + + "plat-button-camera-off": [[16, "event-message-block"]], + + "(trans plat-button-move-downward plat-button)": [[16, "vector"]], + + "(trans plat-button-move-upward plat-button)": [[16, "vector"]], + + "(event plat-idle plat-eco)": [[16, "event-message-block"]], + + "(trans plat-idle plat-eco)": [[16, "vector"]], + + "(anon-function 8 plat-eco)": [[16, "event-message-block"]], + + "(anon-function 7 plat-eco)": [ + [16, "vector"] // code + ], + + "(event drop-plat-idle)": [[16, "event-message-block"]], + + "(code drop-plat-rise)": [[16, "vector"]], + + "(post drop-plat-rise)": [[16, "quaternion"]], + + "(code drop-plat-drop)": [[16, "vector"]], + + "(post drop-plat-drop)": [[16, "quaternion"]], + + "(method 21 drop-plat)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "citb-drop-plat-spawn-children": [ + [16, "vector"], + [32, "vector"] + ], + + "citb-drop-plat-drop-all-children": [[16, "event-message-block"]], + + "citb-drop-plat-drop-children": [[16, "event-message-block"]], + + "(event plat-flip-idle)": [[16, "event-message-block"]], + + "(code plat-flip-idle)": [[16, "vector"]], + + "(method 27 square-platform)": [ + [16, "vector"], + [32, "vector"] + ], + + "(event wedge-plat-tip)": [[16, "event-message-block"]], + + "(event wedge-plat-outer-tip)": [[16, "event-message-block"]], + + "(event wall-plat-extending)": [[16, "event-message-block"]], + + "(code wall-plat-extending)": [[16, "vector"]], + + "(event wall-plat-retracting)": [[16, "event-message-block"]], + + "(code wall-plat-retracting)": [[16, "vector"]], + + "(event wall-plat-sync-idle)": [[16, "event-message-block"]], + + "(code wall-plat-sync-idle)": [[16, "vector"]], + + "(method 11 wall-plat)": [[16, "vector"]], + + "reset-target-tracking": [[16, "vector"]], + "reset-drawable-tracking": [[16, "vector"]], + + "master-track-target": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "collide-mesh-cache-tri"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + "master-unset-region": [[16, "event-message-block"]], + "master-base-region": [ + [16, "vector"], + [32, "event-message-block"] + ], + "master-switch-to-entity": [[32, "event-message-block"]], + "master-check-regions": [[16, "event-message-block"]], + + "cam-circular-position-into-max-angle": [ + [16, "matrix"], + [80, "matrix"], + [144, "vector"], + [160, "vector"] + ], + "cam-circular-position": [ + [16, "vector"], + [32, "vector"] + ], + "cam-circular-code": [[16, "vector"]], + "(anon-function 37 cam-states)": [ + [48, "vector"], + [64, "event-message-block"], + [16, "vector"], + [32, "vector"] + ], + "cam-string-find-position-rel!": [ + [16, "vector"], + [32, "vector"], + [48, "bone"], + [144, "matrix"] + ], + "cam-los-spline-collide": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(event cam-master-active)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "(code cam-master-active)": [[16, "event-message-block"]], + + "(exit cam-eye)": [[16, "event-message-block"]], + + "(code cam-fixed)": [[16, "vector"]], + + "(enter cam-eye)": [[16, "vector"]], + + "(enter cam-billy)": [[16, "vector"]], + + "(code cam-pov180)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(enter cam-fixed-read-entity)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(enter cam-pov-track)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code cam-decel)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(code cam-eye)": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + + "(code cam-billy)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "matrix"] + ], + + "(enter cam-standoff-read-entity)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(code cam-endlessfall)": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"] + ], + + "(enter cam-spline)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "(code cam-spline)": [[16, "curve"]], + + "(enter cam-circular)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "los-cw-ccw": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"], + [112, "vector"] + ], + + "cam-string-follow": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "cam-string-line-of-sight": [ + [16, "clip-travel-vector-to-mesh-return-info"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"], + [240, "vector"], + [256, "vector"] + ], + + "cam-string-joystick": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"], + [112, "vector"] + ], + + "cam-string-find-hidden": [ + [16, "collide-mesh-cache-tri"], + [112, "vector"], + [128, "vector"] + ], + + "cam-string-move": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "collide-mesh-cache-tri"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + + "cam-string-code": [ + [16, "vector"], + [32, "vector"] + ], + + "(event cam-string)": [[16, "vector"]], + + "(trans cam-stick)": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"], + [112, "vector"] + ], + "cam-bike-code": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "collide-mesh-cache-tri"], + [272, "vector"] + ], + + "cam-stick-code": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "collide-mesh-cache-tri"], + [192, "vector"] + ], + + "(enter cam-string)": [ + [16, "vector"], + [32, "collide-mesh-cache-tri"], + [128, "vector"], + [144, "vector"], + [160, "vector"] + ], + + "cam-los-collide": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "(code cam-point-watch)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"] + ], + + "(code cam-orbit)": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter cam-free-floating)": [[16, "event-message-block"]], + + "(enter cam-orbit)": [[16, "vector"]], + + "(method 25 pov-camera)": [[16, "event-message-block"]], + + "(code pov-camera-start-playing pov-camera)": [[16, "event-message-block"]], + + "(code pov-camera-done-playing pov-camera)": [[16, "event-message-block"]], + + "debug-set-camera-pos-rot!": [[16, "event-message-block"]], + + "camera-master-debug": [[16, "vector"]], + + "(method 23 tracking-spline)": [ + [16, "vector"], + [32, "vector"] + ], + + "master-draw-coordinates": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + + "camera-slave-debug": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"], + [112, "vector"], + [128, "curve"], + [160, "vector"], + [176, "vector"], + [192, "vector"] + ], + + "cam-debug-draw-tris": [[16, "vector4w"]], + + "cam-collision-record-draw": [ + [16, "vector4w"], + [32, "vector4w"], + [48, "collide-mesh-cache-tri"], + [144, "vector"] + ], + + "debug-euler": [ + [16, "euler-angles"], + [32, "matrix"] + ], + + "v-slrp!": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "interp-test": [ + [16, "vector"], + [32, "vector"] + ], + + "cam-layout-save-cam-trans": [[16, "vector"]], + + "cam-layout-save-pivot": [[16, "vector"]], + + "cam-layout-save-interesting": [[16, "vector"]], + + "cam-layout-save-align": [[16, "vector"]], + + "clmf-cam-flag-toggle": [[16, "clmf-cam-flag-toggle-info"]], + + "interp-test-deg": [ + [16, "vector"], + [32, "vector"] + ], + + "clmf-pos-rot": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"], + [112, "matrix"], + [176, "vector"] + ], + + "clmf-input": [ + [16, "matrix"], + [80, "vector"] + ], + + "cam-layout-entity-info": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "curve"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "curve"], + [256, "vector"], + [272, "vector"], + [288, "vector"], + [304, "curve"], + [336, "vector"], + [352, "vector"], + [368, "interp-test-info"], + [432, "vector"] + ], + + "clmf-save-single": [[16, "file-stream"]], + + "pov-camera-play-and-reposition": [[16, "event-message-block"]], + + "cam-layout-entity-volume-info-create": [ + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"] + ], + + "(code plunger-lurker-plunge)": [[16, "event-message-block"]], + "(event flying-lurker-fly)": [[16, "event-message-block"]], + "(trans flying-lurker-fly)": [[16, "event-message-block"]], + "flying-lurker-handler": [[16, "event-message-block"]], + "flying-lurker-play-intro": [[16, "event-message-block"]], + "(code flying-lurker-start)": [[16, "event-message-block"]], + "(event flying-lurker-clone)": [[16, "event-message-block"]], + "(event flying-lurker-idle)": [[16, "event-message-block"]], + "(code flying-lurker-idle)": [[16, "event-message-block"]], + "flying-lurker-calc-speed": [ + [16, "vector"], + [32, "vector"] + ], + "(method 20 flying-lurker)": [ + [16, "collide-mesh-cache-tri"], + [112, "vector"], + [128, "vector"], + [144, "bounding-box"], + [176, "vector"] + ], + "flying-lurker-rotate": [ + [16, "matrix"], + [80, "matrix"], + [144, "vector"], + [160, "vector"] + ], + + "(method 18 collide-cache)": [[16, "collide-cache-prim"]], + + "kill-current-level-hint": [[16, "event-message-block"]], + "(exit level-hint-sidekick)": [[16, "event-message-block"]], + "(method 14 level-hint)": [[16, "font-context"]], + "(code level-hint-error)": [[16, "font-context"]], + "ambient-type-hint": [[16, "font-context"]], + "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"], + [48, "quaternion"] + ], + + "sp-adjust-launch": [ + [16, "sparticle-launchinfo"], + [64, "matrix"], + [128, "vector"], + [144, "matrix"] + ], + + "(method 10 sparticle-launch-control)": [[16, "vector"]], + + "sparticle-50-to-60": [[16, "quaternion"]], + + "sparticle-60-to-50": [[16, "quaternion"]], + + "sp-orbiter": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + + "sp-euler-convert": [ + [16, "vector"], + [32, "quaternion"] + ], + + "sp-rotate-system": [ + [16, "matrix"], + [80, "quaternion"] + ], + + "sp-launch-particles-death": [ + [16, "sprite-vec-data-2d"] // TODO this is probably wrong. + ], + + "birth-func-copy-rot-color": [[16, "vector"]], + + "birth-func-copy2-rot-color": [ + [16, "vector"], + [32, "vector"] + ], + + "(code nav-enemy-give-up babak)": [[16, "vector"]], + + "(method 10 gui-query)": [[16, "font-context"]], + + "(method 46 process-taskable)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans release process-taskable)": [[16, "event-message-block"]], + + "(trans give-cell process-taskable)": [[16, "event-message-block"]], + + "process-taskable-play-anim-code": [[16, "event-message-block"]], + + "(event idle process-taskable)": [[16, "event-message-block"]], + + "(trans idle process-taskable)": [ + [16, "font-context"], + [112, "event-message-block"] + ], + + "(post idle process-taskable)": [[16, "vector"]], + + "babak-with-cannon-ride-cannon-post": [[16, "vector"]], + + "(code babak-with-cannon-jump-onto-cannon)": [[16, "vector"]], + + "(code othercam-running)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code wait-for-start flutflut)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code idle flutflut)": [ + [16, "font-context"], + [112, "event-message-block"] + ], + + "(event wait-for-return flutflut)": [[16, "event-message-block"]], + + "yakow-generate-travel-vector": [ + [16, "vector"], + [32, "vector"] + ], + + "yakow-facing-direction?": [ + [16, "vector"], + [32, "vector"] + ], + + "yakow-facing-point?": [[16, "vector"]], + + "(enter yakow-graze)": [[16, "event-message-block"]], + + "(method 13 vehicle-path)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 12 vehicle-controller)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 14 vehicle-controller)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 10 vehicle-controller)": [[16, "vector"]], + + "(method 23 fishermans-boat)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"] + ], + + "fishermans-boat-wave": [[16, "vector"]], + + "fishermans-boat-spawn-particles": [[16, "vector"]], + + "fishermans-boat-play-sounds": [[16, "vector"]], + + "fishermans-boat-post": [[16, "event-message-block"]], + + "(code fishermans-boat-leaving-village)": [[16, "event-message-block"]], + + "(trans fishermans-boat-entering-village)": [[16, "event-message-block"]], + + "(code fishermans-boat-leaving-misty)": [[16, "event-message-block"]], + + "(trans fishermans-boat-entering-misty)": [[16, "event-message-block"]], + + "(exit fishermans-boat-player-control)": [[16, "event-message-block"]], + + "(code fishermans-boat-player-control)": [[16, "event-message-block"]], + + "(code fishermans-boat-ride-to-misty)": [[16, "event-message-block"]], + + "(event fishermans-boat-ride-to-village1)": [[16, "event-message-block"]], + + "(code fishermans-boat-ride-to-village1)": [[16, "event-message-block"]], + + "fishermans-boat-leave-dock?": [[16, "font-context"]], + + "(trans fishermans-boat-player-control)": [[16, "vector"]], + + "(code fishermans-boat-measurements)": [[16, "vector"]], + + "(method 15 vehicle-controller)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "analyze-point-on-path-segment": [[16, "vector"]], + + "(method 51 muse)": [[16, "vector"]], + + "muse-check-dest-point": [[16, "point-on-path-segment-info"]], + + "(code muse-caught)": [[16, "event-message-block"]], + + "(method 43 bonelurker)": [[16, "event-message-block"]], + + "bonelurker-stunned-event-handler": [[16, "event-message-block"]], + + "bonelurker-push-post": [[16, "vector"]], + + "(code nav-enemy-give-up bonelurker)": [[16, "vector"]], + + "(code bonelurker-stun)": [[16, "vector"]], + + "(method 32 assistant-bluehut)": [[16, "event-message-block"]], + + "(trans idle assistant-bluehut)": [[16, "event-message-block"]], + + "(exit play-anim assistant-bluehut)": [[16, "event-message-block"]], + + "(method 32 assistant-levitator)": [[16, "event-message-block"]], + + "(exit play-anim assistant-levitator)": [[16, "event-message-block"]], + + "(method 47 assistant-bluehut)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 43 assistant-bluehut)": [[16, "vector"]], + + "check-drop-level-assistant-bluehut": [[16, "vector"]], + + "assistant-levitator-blue-glow": [[16, "vector"]], + + "(code idle assistant-bluehut)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "assistant-levitator-blue-beam": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "collide-mesh-cache-tri"], + [160, "event-message-block"] + ], + + "(trans hidden assistant-levitator)": [[16, "font-context"]], + + "(event square-platform-lowering)": [[16, "event-message-block"]], + + "(method 33 qbert-plat)": [[16, "event-message-block"]], + + "(method 32 qbert-plat)": [[16, "event-message-block"]], + + "(event qbert-plat-master-idle)": [[16, "event-message-block"]], + + "(code qbert-plat-master-do-door)": [[16, "event-message-block"]], + + "(code qbert-plat-master-wait-for-door)": [[16, "event-message-block"]], + + "(code qbert-plat-master-idle)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "keg-event-handler": [[16, "event-message-block"]], + + "(code keg-paddle-to-path)": [ + [16, "vector"], + [32, "vector"], + [48, "quaternion"], + [64, "quaternion"], + [80, "vector"] + ], + + "(code keg-on-path)": [ + [16, "vector"], + [32, "vector3s"] + ], + + "(code keg-in-chute)": [ + [16, "vector"], + [32, "vector"] + ], + + "keg-init-by-other": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code keg-conveyor-paddle-idle)": [[16, "event-message-block"]], + + "(method 11 keg-conveyor)": [ + [16, "vector"], + [32, "matrix"] + ], + + "swamp-bat-slave-event-handler": [[16, "event-message-block"]], + + "swamp-bat-launch-slave": [[16, "event-message-block"]], + + "swamp-bat-slave-path-post": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code swamp-bat-slave-idle)": [ + [16, "vector"], + [32, "quaternion"], + [48, "quaternion"], + [64, "vector"] + ], + + "(code swamp-bat-slave-launch)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code swamp-bat-slave-die)": [[16, "vector"]], + + "swamp-bat-make-path-select-plane": [[16, "vector"]], + + "(method 44 swamp-rat)": [[16, "event-message-block"]], + + "(method 39 swamp-rat)": [[16, "vector"]], + + "(method 38 swamp-rat)": [[16, "vector"]], + + "(code swamp-rat-spawn)": [[16, "vector"]], + + "swamp-rat-update-wiggle-target": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "swamp-rat-nest-dummy-event-handler": [[16, "event-message-block"]], + + "(trans swamp-rat-nest-gestate)": [[16, "event-message-block"]], + + "(code swamp-rat-nest-victory)": [[16, "event-message-block"]], + + "swamp-rat-nest-pick-spawn-joint": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "swamp-rat-nest-spawn-rat": [ + [16, "vector"], + [32, "vector"] + ], + + "cavecrystal-light-control-default-callback": [[16, "vector"]], + + "spiderwebs-default-event-handler": [[16, "event-message-block"]], + + "(enter nav-enemy-die baby-spider)": [[16, "event-message-block"]], + + "(code baby-spider-die-fast)": [[16, "event-message-block"]], + + "(method 39 baby-spider)": [[16, "vector"]], + + "(enter nav-enemy-idle baby-spider)": [[16, "vector"]], + + "(method 52 baby-spider)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "mother-spider-proj-update-velocity": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(method 28 mother-spider-proj)": [[16, "vector"]], + + "(code blue-eco-charger-orb-active)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 21 blue-eco-charger)": [[16, "event-message-block"]], + + "(method 20 blue-eco-charger)": [[16, "event-message-block"]], + + "(code blue-eco-charger-idle)": [[16, "event-message-block"]], + + "(code exit-chamber-charger-puzzle-beaten)": [[16, "event-message-block"]], + + "(code exit-chamber-idle-in-sunken)": [[16, "event-message-block"]], + + "(event exit-chamber-idle-in-sunken)": [ + [16, "event-message-block"], + [32, "event-message-block"] + ], + + "(method 24 exit-chamber)": [[16, "vector"]], + + "(method 23 exit-chamber)": [ + [16, "vector"], + [32, "vector"], + [48, "exit-chamber-items"], + [128, "event-message-block"], + [208, "vector"] + ], + + "tube-thrust": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + + "target-tube-post": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"] + ], + + "(event target-tube-start)": [[16, "event-message-block"]], + + "(exit target-tube-start)": [[16, "event-message-block"]], + + "(code target-tube-start)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(method 21 sunkenfisha)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 24 sunkenfisha)": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"] + ], + + "(method 23 sunkenfisha)": [[16, "vector"]], + + "(trans sunkenfisha-idle)": [[16, "vector"]], + + "(method 27 sunkenfisha)": [[64, "vector"]], + + "(event idle minecartsteel)": [[16, "collide-overlap-result"]], + + "(method 43 assistant-villagec)": [[16, "vector"]], + + "(method 32 sage-villagec)": [[16, "event-message-block"]], + + "(method 43 sage-villagec)": [[16, "vector"]], + + "(trans idle sage-villagec)": [[16, "event-message-block"]], + + "(exit play-anim sage-villagec)": [[16, "event-message-block"]], + + "(method 20 cave-trap)": [ + [16, "spawn-baby-spider-work"], + [80, "vector"], + [96, "event-message-block"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "(trans cave-trap-idle)": [[16, "event-message-block"]], + + "ice-cube-default-event-handler": [[16, "event-message-block"]], + + "(trans yeti-slave-appear-jump-up)": [[16, "vector"]], + + "(code nav-enemy-give-up yeti-slave)": [[16, "vector"]], + + "(code yeti-resuming-start)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code yeti-idle)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans hidden assistant-lavatube-start)": [[16, "font-context"]], + + "(method 18 nav-control)": [[16, "vector"]], + + "check-drop-level-firehose-pops": [[16, "vector"]], + + "birth-func-random-rot": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"] + ], + + "check-drop-level-bigdoor-open-pops": [[16, "vector"]], + + "check-drop-level-eichar-lighteco-pops": [[16, "vector"]], + + "check-drop-level-maincave-drip": [[16, "vector"]], + + "part-tracker-move-to-target": [[16, "vector"]], + + "part-tracker-track-target": [[16, "vector"]], + + "check-drop-level-village1-fountain-nosplash": [[16, "vector"]], + + "check-drop-level-village1-fountain": [[16, "vector"]], + + "check-drop-level-sagehut": [[16, "vector"]], + + "check-drop-level-training-mist": [[16, "vector"]], + + "check-drop-level-training-spout-rain": [[16, "vector"]], + + "check-drop-level-sagehut2": [[16, "vector"]], + + "(method 15 hud-money-all)": [[16, "font-context"]], + + "(method 20 hud-money-all)": [[16, "event-message-block"]], + + "(method 20 hud-money)": [[16, "event-message-block"]], + + "fuel-cell-hud-orbit-callback": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 19 hud-fuel-cell)": [[16, "vector"]], + + "(method 20 hud-fuel-cell)": [ + [16, "event-message-block"], + [96, "quaternion"] + ], + + "hide-hud": [[16, "event-message-block"]], + + "hide-bottom-hud": [[16, "event-message-block"]], + + "disable-hud": [[16, "event-message-block"]], + + "enable-hud": [[16, "event-message-block"]], + + "hide-hud-quick": [[16, "event-message-block"]], + + "show-hud": [[16, "event-message-block"]], + + "convert-to-hud-object": [[16, "vector"]], + + "(method 16 hud)": [[16, "event-message-block"]], + + "(enter hud-hidden)": [[16, "event-message-block"]], + + "(enter hud-arriving)": [[16, "event-message-block"]], + + "send-hud-increment-event": [[16, "event-message-block"]], + + "(code hud-collecting)": [[16, "vector"]], + + "battlecontroller-fill-all-spawners": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "battlecontroller-camera-on": [[16, "event-message-block"]], + + "(code battlecontroller-die battlecontroller)": [[16, "event-message-block"]], + + "battlecontroller-battle-begin": [[16, "event-message-block"]], + + "battlecontroller-update-spawners": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "battlecontroller-spawn-creature-at-spawner": [ + [16, "vector"], + [32, "vector"] + ], + + "battlecontroller-camera-off": [[16, "event-message-block"]], + + "battlecontroller-spawn-creature-random-spawner": [ + [16, "event-message-block"] + ], + + "(method 10 effect-control)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"] + ], + + "(method 11 effect-control)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 12 effect-control)": [ + [16, "sound-spec"], + [96, "vector"] + ], + + "(code helix-button-startup)": [[16, "vector"]], + + "(method 43 green-eco-lurker)": [[16, "event-message-block"]], + + "(method 73 green-eco-lurker)": [[16, "event-message-block"]], + + "citb-sagecage-draw-bars": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code sunken-pipegame-start-up)": [[16, "event-message-block"]], + + "(code race-ring-active)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(method 11 race-ring)": [ + [16, "vector"], + [32, "vector"] + ], + + "init-sky-regs": [[16, "vector"]], + + "set-tex-offset": [[16, "vector"]], + + "sky-tng-setup-cloud-layer": [[16, ["inline-array", "sky-vertex", 12]]], + + "fisher-fish-move": [[16, "vector"]], + "fisher-fish-water": [[16, "vector"]], + "(trans play-accept fisher)": [[16, "vector"]], + "(method 11 fisher)": [[16, "vector"]], + "(code fisher-fish-caught)": [[16, "event-message-block"]], + "(code fisher-fish-die)": [[16, "event-message-block"]], + "(exit fisher-done)": [[16, "event-message-block"]], + "(enter fisher-done)": [[16, "event-message-block"]], + "(event fisher-playing)": [[16, "event-message-block"]], + "(enter fisher-playing)": [[16, "event-message-block"]], + "(exit fisher-playing)": [[16, "event-message-block"]], + "(trans enter-playing fisher)": [[16, "event-message-block"]], + "(code target-fishing)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "quaternion"], + [128, "quaternion"], + [144, "quaternion"] + ], + "(method 43 fisher)": [ + [16, "vector"], + [32, "vector"] + ], + "fisher-draw-display": [[16, "font-context"]], + + "(method 10 torus)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 12 torus)": [[16, "matrix"]], + "redshot-trans": [[16, "matrix"]], + "(trans redshot-explode)": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"] + ], + "(code darkecobomb-explode)": [[16, "event-message-block"]], + "(event yellowshot-idle)": [[16, "event-message-block"]], + "(trans yellowshot-idle)": [[16, "event-message-block"]], + "(trans darkecobomb-countdown)": [[16, "vector"]], + + "arcing-shot-draw": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 9 torus)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"], + [128, ["inline-array", "vector", 8]] + ], + + "(method 32 finalbosscam)": [[16, "event-message-block"]], + + "(code cam-robotboss)": [ + [16, "vector"], + [32, "vector"] + ], + + "ecoclaw-beam-particle-callback": [[16, "vector"]], + "robotboss-manipy-trans-hook": [[16, "vector"]], + "robotboss-redshot": [[16, "vector"]], + "robotboss-cut-cam": [[16, "vector"]], + + "robotboss-yellowshot": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(trans robotboss-white-eco-movie)": [[16, "vector"]], + + "(code robotboss-red-wait)": [ + [16, "vector"], + [32, "redshot-launch-array"] + ], + + "(trans robotboss-yellow-wait)": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"] + ], + + "robotboss-setup-for-hits": [ + [16, "sphere"], + [32, "event-message-block"] + ], + + "robotboss-position": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"], + [176, "vector"] + ], + + "robotboss-shooting-trans": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "robotboss-darkecobomb": [ + [16, "vector"], + [32, "vector"] + ], + + "robotboss-redshot-fill-array": [ + [16, "vector"], + [32, "vector"] + ], + + "robotboss-blue-beam": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "collide-mesh-cache-tri"], + [160, "vector"], + [176, "event-message-block"] + ], + + "robotboss-bomb-handler": [[16, "event-message-block"]], + "robotboss-blue-done": [[16, "event-message-block"]], + "(exit robotboss-blue-wait)": [[16, "event-message-block"]], + "(enter robotboss-blue-wait)": [[16, "event-message-block"]], + "(exit robotboss-green-wait)": [[16, "event-message-block"]], + "(event robotboss-green-wait)": [[16, "event-message-block"]], + + "(trans robotboss-red-wait)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(exit robotboss-red-wait)": [[16, "event-message-block"]], + "(exit robotboss-yellow-wait)": [[16, "event-message-block"]], + "(code robotboss-white-eco-movie)": [[16, "event-message-block"]], + "(event robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]], + "(exit robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]], + "(code robotboss-daxter-sacrifice-movie)": [[16, "event-message-block"]], + + "robotboss-greenshot": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans robotboss-blue-wait)": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"] + ], + + "(code robotboss-blue-wait)": [[16, "event-message-block"]], + + "(method 44 green-eco-lurker)": [[16, "event-message-block"]], + "(method 72 green-eco-lurker)": [[16, "event-message-block"]], + "(enter nav-enemy-die green-eco-lurker)": [[16, "event-message-block"]], + "(event spawn-minions)": [[16, "event-message-block"]], + "(method 51 green-eco-lurker)": [[16, "vector"]], + "(enter green-eco-lurker-appear)": [ + [16, "vector"], + [32, "vector"] + ], + "(code spawn-minions)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "check-drop-level-lighteco-big-pops": [[16, "vector"]], + "check-drop-level-lighteco-pops": [[16, "vector"]], + "(method 20 light-eco-child)": [[16, "vector"]], + "light-eco-child-default-event-handler": [[16, "event-message-block"]], + "(code light-eco-child-die)": [[16, "event-message-block"]], + "light-eco-mother-default-event-handler": [[16, "event-message-block"]], + "(trans light-eco-child-hit-ground)": [[16, "vector"]], + "(method 21 light-eco-mother)": [[16, "vector"]], + "(method 20 light-eco-mother)": [[16, "vector"]], + + "(trans plat-path-active plat-eco-finalboss)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + "(method 44 sage-finalboss)": [[16, "event-message-block"]], + "(method 45 sage-finalboss)": [[16, "event-message-block"]], + "(method 32 sage-finalboss)": [[16, "event-message-block"]], + "(exit play-anim sage-finalboss)": [[16, "event-message-block"]], + "sage-finalboss-extra-trans": [[16, "event-message-block"]], + "sage-finalboss-extra-enter": [[16, "event-message-block"]], + "(trans play-anim sage-finalboss)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + + "lb-flip":[ + [16, "load-boundary-crossing-command"] + ], + + "---lb-save":[ + [16, "file-stream"] + ], + + "edit-load-boundaries":[ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "triangulate-boundary":[ + [16, "lbvtx"] + ], + + "fix-boundary-normals":[ + [16, "vector"] + ], + + "check-closed-boundary":[ + [16, "vector"] + ], + + "(event target-racing-start)": [ + [16, "event-message-block"] + ], + + "(exit target-racing-start)": [ + [16, "event-message-block"] + ], + + "(code target-racing-start)": [ + [16, "event-message-block"] + ], + + "target-racing-smack-check": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans target-racing)": [ + [16, "vector"] + ], + + "(trans target-racing-jump)": [ + [16, "vector"] + ], + + "(trans target-racing-bounce)": [ + [16, "vector"] + ], + + "(code target-racing-hit)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"] + ], + + "(exit target-racing-death)": [ + [16, "event-message-block"] + ], + + "(anon-function 17 racer-states-FIC-LAV-MIS-OGR-ROL)": [ + [16, "joint-exploder-tuning"] + ], + + "(code target-racing-death)": [ + [16, "event-message-block"], + [96, "vector"], + [112, "vector"] + ], + + "(code target-racing-get-on)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(post target-racing-get-on)": [ + [16, "vector"] + ], + + "(code target-racing-get-off-jump)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(post target-racing-get-off-jump)": [ + [16, "vector"] + ], + + "(exit target-racing-clone-anim)": [ + [16, "event-message-block"] + ], + + "(code target-racing-clone-anim)": [ + [16, "event-message-block"] + ], + + "(method 9 joint-control)": [[16, "vector"]], + "process-drawable-birth-fuel-cell": [[16, "vector"]], + "dma-add-process-drawable": [ + [32, "vector"], + [48, "vector"], + [64, "light-group"] + ], + + "(trans notice-blue crate)": [[16, "event-message-block"]], + "(event die crate)": [[16, "event-message-block"]], + "(code notice-blue crate)": [[16, "vector"]], + + "process-grab?": [[16, "event-message-block"]], + "process-release?": [[16, "event-message-block"]], + + "cloud-track": [ + [16, "vector"], + [32, "vector"] + ], + + "target-powerup-effect": [ + [16, "vector"] + ], + + "target-powerup-process": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"], + [160, "vector"], + [176, "vector"], + [192, "touching-shapes-entry"], + [208, "vector"], + [224, "vector"], + [240, "vector"], + [256, "vector"], + [272, "vector"], + [288, "vector"], + [304, "vector"], + [320, "vector"] + ], + + "process-drawable-pair-random-point!": [ + [16, "vector"], + [32, "vector"] + ], + + "update-ocean": [ + [16, "vector"] + ], + + "(method 20 cavegeyserrock)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(method 21 cavegeyserrock)": [ + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code junglesnake-give-up)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 11 cavegeyserrock)": [ + [48, "vector"] + ], + + "cavecrystal-light-control-cavegeyserrock-callback": [ + [16, "vector"] + ], + + "junglesnake-default-event-handler": [ + [16, "event-message-block"] + ], + + "junglesnake-joint-callback": [ + [16, "matrix"], + [80, "matrix"], + [144, "matrix"], + [208, "vector"], + [224, "vector"], + [240, "vector"], + [256, "vector"], + [272, "vector"], + [288, "vector"], + [304, "matrix"], + [368, "matrix"] + ], + + "add-a-bunch": [ + [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"] + ], + + "(trans orb-cache-top-idle)": [[16, "event-message-block"]], + "(code orb-cache-top-activate)": [ + [16, "vector"], + [32, "event-message-block"] + ], + "(code orb-cache-top-complete)": [[16, "vector"]], + "(method 27 orb-cache-top)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(anon-function 54 generic-obs)": [ + [16, "vector"], + [32, "vector"] + ], + + "part-tracker-notify": [ + [16, "event-message-block"] + ], + + "process-grab?": [ + [16, "event-message-block"] + ], + + "process-release?": [ + [16, "event-message-block"] + ], + + "camera-change-to": [ + [16, "event-message-block"] + ], + + "camera-look-at": [ + [16, "event-message-block"] + ], + + "ja-anim-done?": [ + [16, "event-message-block"] + ], + + "draw-eco-beam": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "quaternion"] + ], + + "process-drawable-pair-random-point!": [ + [16, "vector"], + [32, "vector"] + ], + + "(anon-function 7 generic-obs)": [ + [16, "event-message-block"] + ], + + "(anon-function 11 generic-obs)": [ + [16, "event-message-block"] // trans + ], + + "(anon-function 13 generic-obs)": [ + [16, "event-message-block"] // event + ], + + "(anon-function 14 generic-obs)": [ + [16, "event-message-block"] // trans + ], + + "(anon-function 16 generic-obs)": [ // code + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(anon-function 18 generic-obs)": [ // enter + [16, "vector"] + ], + + "cam-launcher-long-joystick": [ + [16, "matrix"] + ], + + "(anon-function 21 generic-obs)": [ // code + [16, "event-message-block"] + ], + + "(anon-function 23 generic-obs)": [ // enter + [16, "vector"] + ], + + "cam-launcher-joystick": [ + [16, "matrix"], + [80, "vector"] + ], + + "(anon-function 31 generic-obs)": [ + [16, "vector"] // code + ], + + "(code swingpole-stance)": [ + [16, "event-message-block"] + ], + + "camera-anim": [ + [16, "event-message-block"] + ], + + "camera-pov-from": [ + [16, "event-message-block"] + ], + + "(method 14 camera-tracker)": [ + [16, "event-message-block"], + [96, "event-message-block"] + ], + + "(anon-function 33 generic-obs)": [ + [16, "event-message-block"] + ], + + "(trans manipy-idle)": [ + [16, "vector"], + [32, "vector"] + ], + + "(anon-function 34 generic-obs)": [ + [16, "event-message-block"] + ], + + "(exit camera-tracker-process)": [ + [16, "event-message-block"] + ], + + "(code camera-tracker-process)": [ + [16, "event-message-block"] + ], + + "(code cam-launcher-shortfall)": [ + [16, "event-message-block"] + ], + + "(trans launcher-idle)": [ + [16, "event-message-block"] + ], + + "(event launcher-active)": [ + [16, "event-message-block"] + ], + + "(event touch-tracker-idle)": [ + [16, "event-message-block"] + ], + + "(trans launcher-active)": [ + [16, "event-message-block"] + ], + + "(code touch-tracker-idle)": [ + [16, "touching-shapes-entry"] + ], + + "(event manipy-idle)": [ + [16, "matrix"] + ], + + "(code med-res-level-idle)": [ + [16, "vector"] + ], + + "(enter cam-launcher-longfall)": [ + [16, "vector"] + ], + + "(enter cam-launcher-shortfall)": [ + [16, "vector"] + ], + + "(code cam-launcher-longfall)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "plant-boss-default-event-handler": [ + [16, "event-message-block"] + ], + + "(event plant-boss-vulnerable)": [ + [16, "event-message-block"] + ], + + "(code plant-boss-hit)": [ + [16, "event-message-block"] + ], + + "(code plant-boss-dead)": [ + [16, "event-message-block"] + ], + + "(event plant-boss-attack)": [ + [16, "event-message-block"] + ], + + "(code plant-boss-eat)": [ + [16, "event-message-block"] + ], + + "(anon-function 22 plant-boss)": [ + [16, "event-message-block"] + ], + + "(code plant-boss-vulnerable)": [ + [16, "event-message-block"] + ], + + "(exit plant-boss-vulnerable)": [ + [16, "event-message-block"] + ], + + "(event plant-boss-back-arms-idle)": [ + [16, "event-message-block"] + ], + + "(method 11 plant-boss)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"] + ], + + "(method 60 ice-cube)": [ + [16, "vector"] + ], + + "(method 52 ice-cube)": [ + [16, "vector"] + ], + + "(trans ice-cube-appear)": [ + [16, "vector"] + ], + + "(code ice-cube-appear-land)": [ + [16, "vector"] + ], + + "(code ice-cube-face-player)": [ + [16, "vector"] + ], + + "(code ice-cube-mean-turn-to-charge)": [ + [16, "vector"] + ], + + "(method 54 ice-cube)": [ + [16, "vector"] + ], + + "(code ice-cube-shatter)": [ + [16, "vector"], + [32, "joint-exploder-tuning"] + ], + + "(trans ice-cube-trying-to-appear)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans ice-cube-mean-charge)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 51 ice-cube)": [ + [16, "vector"], + [32, "collide-tri-result"] + ], + + "(method 53 ice-cube)": [ + [16, "vector"], + [32, "collide-mesh-cache-tri"] + ], + + "(event double-lurker-top-knocked-down)": [ + [16, "event-message-block"] + ], + + "(code double-lurker-top-knocked-down)": [ + [16, "vector"] + ], + + "(method 48 double-lurker)": [ + [16, "vector"] + ], + + "(method 52 double-lurker)": [ + [16, "vector"], + [32, "vector"], + [48, "collide-mesh-cache-tri"] + ], + + "double-lurker-default-event-handler": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code double-lurker-buddy-was-hit)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(trans double-lurker-both-knocked-back)": [ + [16, "check-vector-collision-with-nav-spheres-info"], + [64, "clip-travel-vector-to-mesh-return-info"] + ], + + "(trans double-lurker-knocked-back)": [ + [16, "check-vector-collision-with-nav-spheres-info"], + [64, "clip-travel-vector-to-mesh-return-info"] + ], + + "(code nav-enemy-die billy-rat)": [ + [16, "event-message-block"] + ], + + "(code billy-rat-eat)": [ + [16, "event-message-block"] + ], + + "(code billy-rat-salivate)": [ + [16, "event-message-block"] + ], + + "(enter nav-enemy-victory billy-rat)": [ + [16, "event-message-block"] + ], + + "(enter billy-done)": [ + [16, "event-message-block"] + ], + + "(exit billy-done)": [ + [16, "event-message-block"] + ], + + "(trans enter-playing billy)": [ + [16, "event-message-block"] + ], + + "(method 11 billy)": [ + [16, "event-message-block"] + ], + + "(method 32 billy)": [ + [16, "vector"] + ], + + "billy-rat-init-by-other": [ + [16, "vector"] + ], + + "(method 43 billy)": [ + [16, "vector"] + ], + + "(enter billy-playing)": [ + [16, "vector"] + ], + + "billy-game-update": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 20 lurkerworm)": [ + [16, "vector"] + ], + + "lurkerworm-prebind-function": [ + [16, "quaternion"] + ], + + "(method 21 lurkerworm)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "lurkerworm-default-event-handler": [ + [16, "event-message-block"] + ], + + "(method 11 pelican)": [ + [16, "event-message-block"] + ], + + "(code pelican-explode)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(event pelican-circle)": [ + [16, "vector"] + ], + + "pelican-path-update": [ + [16, "vector"] + ], + + "(trans pelican-wait-at-nest)": [ + [16, "vector"] + ], + + "(enter pelican-fly-to-end)": [ + [16, "vector"] + ], + + "(code pelican-spit)": [ + [16, "quaternion"], + [32, "event-message-block"], + [112, "vector"] + ], + + "(enter pelican-circle)": [ + [16, "event-message-block"] + ], + + "(code pelican-wait-at-nest)": [ + [16, "event-message-block"] + ], + + "(event pelican-wait-at-nest)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code pelican-dive)": [ + [16, "event-message-block"] + ], + + "(enter pelican-wait-at-nest)": [ + [16, "event-message-block"] + ], + + "(code pelican-circle)": [ + [16, "event-message-block"] + ], + + "(enter pelican-dive)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(anon-function 37 pelican)": [ + [16, "event-message-block"] + ], + + "(trans energydoor-closed-till-task)": [ + [16, "event-message-block"] + ], + + "(method 11 energydoor)": [ + [16, "event-message-block"] + ], + + "(enter energyhub-stopped)": [ + [16, "event-message-block"] + ], + + "(enter energyhub-stop)": [ + [16, "event-message-block"] + ], + + "energydoor-player-dist": [ + [16, "vector"], + [32, "matrix"] + ], + + "(trans energyarm-idle)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "energyarm-trans": [ + [16, "vector"], + [32, "matrix"] + ], + + "(trans energyball-idle)": [ + [16, "vector"], + [32, "matrix"] + ], + + "(method 11 energyhub)": [ + [16, "vector"], + [32, "matrix"] + ], + + "energyhub-trans": [ + [16, "matrix"] + ], + + "(method 43 red-sagecage)": [ + [16, "vector"] + ], + + "(method 43 blue-sagecage)": [ + [16, "vector"] + ], + + "(method 43 yellow-sagecage)": [ + [16, "vector"] + ], + + "(method 44 citb-sage)": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter hidden citb-sage)": [ + [16, "event-message-block"] + ], + + "(trans idle green-sagecage)": [ + [16, "event-message-block"] + ], + + "(exit play-anim green-sagecage)": [ + [16, "event-message-block"] + ], + + "(trans play-anim green-sagecage)": [ + [16, "event-message-block"] + ], + + "(event play-anim green-sagecage)": [ + [16, "event-message-block"] + ], + + "(method 32 green-sagecage)": [ + [16, "event-message-block"] + ], + + "(event play-anim citb-sage)": [ + [16, "event-message-block"] + ], + + "(event idle citb-sage)": [ + [16, "event-message-block"] + ], + + "(event wait eco-collectable)": [ + [16, "event-message-block"] + ], + + "(enter wait eco-collectable)": [ + [16, "event-message-block"] + ], + + "(event notice-blue eco-collectable)": [ + [16, "event-message-block"] + ], + + "(trans notice-blue eco-collectable)": [ + [16, "event-message-block"] + ], + + "(code pickup eco-collectable)": [ + [16, "event-message-block"] + ], + + "(enter pickup eco-collectable)": [ + [16, "event-message-block"] + ], + + "(code die eco)": [ + [16, "event-message-block"] + ], + + "(code pickup fuel-cell)": [ + [16, "event-message-block"] + ], + + "(code pickup buzzer)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(trans pickup fuel-cell)": [ + [16, "event-message-block"] + ], + + "(event vent-wait-for-touch)": [ + [16, "event-message-block"] + ], + + "add-blue-motion": [ + [16, "vector"] + ], + + "ecovalve-init-by-other": [ + [16, "vector"] + ], + + "(anon-function 69 collectables)": [ + [16, "vector"] + ], + + "(code ecovalve-idle)": [ + [16, "vector"] + ], + + "(method 9 fact-info)": [ + [16, "vector"], + [32, "collide-tri-result"] + ], + + "(method 29 buzzer)": [ + [16, "vector"] + ], + + "(trans wait eco-collectable)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(code jump eco-collectable)": [ + [16, "trajectory"] + ], + + "(event shover-idle)": [ + [16, "attack-info"], + [128, "event-message-block"] + ], + + "(method 21 sun-iris-door)": [ + [16, "vector"] + ], + + "(method 20 sun-iris-door)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 20 steam-cap)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(method 21 steam-cap)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"] + ], + + "(method 11 steam-cap)": [ + [32, "vector"] + ], + + "(trans floating-launcher-idle)": [ + [16, "vector"] + ], + + "(trans whirlpool-idle)": [ + [16, "vector"] + ], + + "(method 20 whirlpool)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(method 12 touching-list)": [ + [16, "event-message-block"] + ], + + "(method 9 touching-list)": [ + [16, "touching-shapes-entry"] + ], + + "(method 11 touching-prims-entry)": [ + [16, "vector"] + ], + + "(method 35 collide-shape)": [ + [16, "pull-rider-info"], + [128, "matrix"], + [192, "event-message-block"], + [272, "collide-overlap-result"], + [384, "matrix"], + [448, "collide-overlap-result"], + [560, "matrix"], + [624, "collide-overlap-result"], + [736, "matrix"] + ], + + "(method 44 collide-shape)": [ + [16, "pull-rider-info"] + ], + + "(method 12 collide-mesh)": [ + [16, "matrix"] + ], + + "target-attack-up": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(method 30 collide-shape)": [ + [16, "vector"] + ], + + "(method 32 collide-shape)": [ + [16, "bounding-box"] + ], + + "(method 33 collide-shape)": [ + [16, "vector"] + ], + + "(method 57 collide-shape-moving)": [ + [16, "vector"] + ], + + "(method 60 collide-shape-moving)": [ + [16, "vector"], + [32, "collide-tri-result"] + ], + + "(method 59 collide-shape-moving)": [ + [16, "collide-mesh-cache-tri"], + [112, "touching-shapes-entry"] + ], + + "(method 58 collide-shape-moving)": [ + [16, "touching-shapes-entry"] + ], + + "simple-collision-reaction": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 62 collide-shape-moving)": [ + [16, "vector"], + [32, "vector"] + ], + + "default-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [96, "vector"], + [112, "vector"], + [144, "vector"] + ], + + "(method 56 collide-shape-moving)": [ + [16, "event-message-block"] + ], + + "(method 63 collide-shape-moving)": [ + [16, "collide-shape-intersect"], + [160, "vector"], + [176, "vector"] + ], + + "(method 37 control-info)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + + "(method 55 collide-shape)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(method 41 collide-shape)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 45 collide-shape)": [ + [16, "collide-work"], + [128, "vector"], + [144, "vector"], + [160, "collide-work"], + [272, "vector"], + [288, "vector"], + [304, "collide-work"], + [416, "vector"], + [432, "vector"], + [448, "collide-work"], + [560, "vector"], + [576, "vector"] + ], + + "collide-planes": [ + [16, "bounding-box"], + [48, ["inline-array", "vector", 18]], + [336, ["inline-array", "bounding-box", 18]], + [928, "vector"], + [944, "vector"], + [960, "vector"], + [976, "vector"], + [992, "vector"], + [1008, "vector"], + [1024, "vector"], + [1040, "vector"], + [1056, "vector"], + [1072, "vector"] + ], + + "dma-add-process-drawable": [ + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "marks-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-village1-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-texture-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-texture2-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-jungle-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "eddie-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "cave-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "paals-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "(method 20 target)": [ + [16, "event-message-block"] + ], + + "(method 19 collide-edge-work)": [ + [16, "vector"], + [32, "vector"], + [48, "collide-using-spheres-params"], + [80, "matrix"] + ], + + "(method 14 collide-edge-work)": [ + [16, "vector"] + ], + + "(method 10 collide-edge-work)": [ + [16, "vector"] + ], + + "(method 9 collide-edge-hold-list)": [ + [16, "vector"] + ], + + "collide-shape-moving-angle-set!": [ + [16, "vector"] + ], + + "poly-find-nearest-edge": [ + [16, "vector"], + [64, "vector"] + ], + + "target-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "(method 31 collide-cache)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 43 collide-shape)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "(method 15 collide-cache)": [ + [16, "bounding-box"] + ], + + "test-closest-pt-in-triangle": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(method 9 collide-mesh)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 10 collide-mesh)": [ + [16, "matrix"] + ], + + "(method 22 collide-shape-prim-mesh)": [ + [16, "collide-tri-result"] + ], + + "find-ground-point": [ + [16, "vector"], + [32, "collide-mesh-cache-tri"], + [128, "bounding-box"], + [160, "vector"] + ], + + "(method 19 collide-shape-prim-sphere)": [[16, "collide-mesh-cache-tri"]], + "(method 37 collide-shape)": [[16, "vector"]], + + "starts": [ + [16, "event-message-block"] + ], + + "(trans target-flop)": [ + [16, "event-message-block"] + ], + + "(event target-wheel)": [ + [16, "event-message-block"] + ], + + "(code target-stance)": [ + [16, "ground-tween-info"] + ], + + "init-var-jump": [ + [16, "vector"] + ], + + "(code target-wheel)": [ + [16, "vector"] + ], + + "(code target-wheel-flip)": [ + [16, "vector"], + [32, "vector"] + ], + + "(enter target-flop)": [ + [16, "vector"] + ], + + "(code target-running-attack)": [ + [16, "vector"] + ], + + "(enter target-flop-hit-ground)": [ + [16, "vector"] + ], + + "(enter target-attack-air)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(enter target-hit-ground)": [ + [16, "vector"] + ], + + "(code target-flop)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(trans target-running-attack)": [ + [16, "vector"], + [32, "vector"] + ], + + "mod-var-jump": [ + [16, "vector"], + [32, "vector"] + ], + + "target-generic-event-handler": [ + [16, "event-message-block"] + ], + + "target-powerup-effect": [ + [16, "vector"] + ], + + "check-water-level-drop": [ + [16, "vector"] + ], + + "(method 13 water-control)": [ + [16, "vector"] + ], + + "(method 10 water-control)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "(method 15 water-control)": [ + [16, "event-message-block"] + ], + + "(anon-function 13 water)": [ + [16, "event-message-block"] + ], + + "(method 26 water-vol)": [ + [16, "event-message-block"] + ], + + "(code wait-for-start racer)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code idle racer)": [ + [16, "font-context"], + [112, "event-message-block"] + ], + + "(event wait-for-return racer)": [ + [16, "event-message-block"] + ], + + "racer-xz": [ + [16, "vector"] + ], + + "racer-cushion": [ + [16, "vector"] + ], + + "target-racing-post": [ + [16, "vector"], + [32, "vector"] + ], + + "racer-effects": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [144, "event-message-block"], + [224, "vector"], + [240, "vector"], + [256, "vector"] + ], + + "racer-sounds": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "racer-collision": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "racer-find-prop-point": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "racer-integrate": [ + [16, "quaternion"] + ], + + "fleeing-nav-enemy-clip-travel": [ + [16, "clip-travel-vector-to-mesh-return-info"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "fleeing-nav-enemy-adjust-travel": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"] + ], + + "fleeing-nav-enemy-chase-post-func": [ + [16, "matrix"], + [80, "matrix"] + ], + + "fleeing-nav-enemy-chase-post": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"], + [112, "vector"], + [128, "vector"] + ], + + "(post lightning-mole-debug-run)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"] + ], + + "(code fleeing-nav-enemy-debug)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "matrix"], + [144, "vector"] + ], + + "(trans nav-enemy-chase lightning-mole)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "(trans lightning-mole-debug-blend)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code lightning-mole-dive)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans lightning-mole-dive)": [ + [16, "event-message-block"] + ], + + "(trans lightning-mole-head-for-hole)": [ + [16, "event-message-block"] + ], + + "(method 43 lightning-mole)": [ + [16, "event-message-block"] + ], + + "(method 44 lightning-mole)": [ + [16, "event-message-block"] + ], + + "check-drop-level-rolling-dirt": [ + [16, "vector"] + ], + + "check-drop-level-rolling-dirt-finish": [ + [16, "vector"] + ], + + "(code fuel-cell-spline-slider)": [ + [16, "vector"] + ], + + "robber-find-ground": [ + [16, "vector"], + [32, "collide-mesh-cache-tri"], + [128, "vector"] + ], + + "robber-rotate": [ + [16, "matrix"], + [80, "vector"] + ], + + "robber-calc-speed": [ + [16, "vector"] + ], + + "(code robber-die)": [ + [16, "vector"] + ], + + "(code robber-initial-notice)": [ + [16, "vector"] + ], + + "(method 11 robber)": [ + [16, "matrix"] + ], + + "(code robber-debug)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code target-flut-running-attack)": [ + [16, "vector"] + ], + + "(enter target-flut-running-attack)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans target-flut-running-attack)": [ + [16, "vector"], + [32, "vector"] + ], + + "(event target-flut-air-attack)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "target-flut-standard-event-handler": [ + [16, "vector"], + [32, "matrix"] + ], + + "(code target-flut-start)": [ + [16, "event-message-block"] + ], + + "(exit target-flut-clone-anim)": [ + [16, "event-message-block"] + ], + + "(code target-flut-clone-anim)": [ + [16, "event-message-block"] + ], + + "(enter target-flut-air-attack-hit-ground)": [ + [16, "event-message-block"] + ], + + "(event target-flut-jump)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(enter target-flut-air-attack)": [ + [16, "vector"] + ], + + "(post target-flut-get-on)": [ + [16, "vector"] + ], + + "(post target-flut-get-off-jump)": [ + [16, "vector"] + ], + + "(code target-flut-get-on)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(code target-flut-get-off-jump)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(code target-flut-death)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(trans target-flut-air-attack)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code target-flut-hit)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "target-hit-orient": [ + [16, "vector"] + ], + + "target-hit-move": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + + "(anon-function 20 target-death)": [ + [16, "event-message-block"] + ], + + "target-death-anim": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code target-death)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(code target-continue)": [ + [16, "event-message-block"], + [96, "transformq"] + ], + + "velocity-set-to-target!": [ + [16, "vector"] + ], + + "(exit target-hit)": [ + [16, "vector"] + ], + + "(code target-hit)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "target-hit-push": [ + [16, "vector"] + ], + + "(anon-function 2 target-death)": [ + [16, "vector"] + ], + + "racer-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, ["inline-array", "vector", 2]], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"] + ], + + "target-send-attack": [ + [16, "event-message-block"], + [112, "vector"], + [144, "vector"], + [160, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "target-apply-tongue": [ + [16, "vector"] + ], + + "target-bonk-event-handler": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"], + [128, "vector"] + ], + + "(code target-load-wait)": [ + [16, "event-message-block"] + ], + + "(code target-stance-look-around)": [ + [16, "event-message-block"] + ], + + "(enter target-look-around)": [ + [16, "event-message-block"] + ], + + "(exit target-look-around)": [ + [16, "event-message-block"] + ], + + "(code target-look-around)": [ + [16, "event-message-block"] + ], + + "(enter target-billy-game)": [ + [16, "event-message-block"] + ], + + "(exit target-billy-game)": [ + [16, "event-message-block"] + ], + + "(enter target-pole-cycle)": [ + [16, "event-message-block"] + ], + + "(code target-pole-flip-up-jump)": [ + [16, "event-message-block"] + ], + + "(enter target-edge-grab)": [ + [16, "event-message-block"] + ], + + "(exit target-edge-grab)": [ + [16, "event-message-block"] + ], + + "(trans target-swim-up)": [ + [16, "event-message-block"] + ], + + "(code target-launch)": [ + [16, "event-message-block"] + ], + + "(code target-play-anim)": [ + [16, "event-message-block"] + ], + + "(exit target-play-anim)": [ + [16, "event-message-block"] + ], + + "(trans target-edge-grab)": [ + [16, "collide-using-spheres-params"] + ], + + "(exit target-clone-anim)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(enter target-clone-anim)": [ + [16, "event-message-block"] + ], + + "(code target-edge-grab-off)": [ + [16, "event-message-block"], + [96, "vector"] + ], + + "(trans target-look-around)": [ + [16, "vector"], + [32, "vector"] + ], + + "(trans target-pole-cycle)": [ + [16, "vector"] + ], + + "(code target-swim-jump)": [ + [16, "vector"] + ], + + "(anon-function 11 target2)": [ + [16, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"] + ], + + "(enter target-yellow-blast)": [ + [16, "vector"] + ], + + "(code target-periscope)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(enter target-yellow-jump-blast)": [ + [16, "vector"] + ], + + "(code target-swim-down)": [ + [16, "vector"] + ], + + "(code target-yellow-jump-blast)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "target-swim-tilt": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(code target-yellow-blast)": [ + [16, "vector"], + [32, "vector"], + [48, "event-message-block"] + ], + + "(code target-edge-grab-jump)": [ + [16, "vector"], + [32, "event-message-block"] + ], + + "(trans target-billy-game)": [ + [16, "vector"], + [32, "vector"] + ], + + "(code target-wade-walk)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "clip-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "placeholder-do-not-add-below!": [] +} diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc new file mode 100644 index 0000000000..0beac81e18 --- /dev/null +++ b/decompiler/config/jak2/type_casts.jsonc @@ -0,0 +1,114 @@ +{ + "(method 2 array)":[ + [23, "gp", "(array int32)"], + [43, "gp", "(array uint32)"], + [63, "gp", "(array int64)"], + [83, "gp", "(array uint64)"], + [102, "gp", "(array int8)"], + [121, "gp", "(array uint8)"], + [141, "gp", "(array int16)"], + [161, "gp", "(array uint16)"], + [185, "gp", "(array uint128)"], + [203, "gp", "(array int32)"], + [222, "gp", "(array float)"], + [231, "gp", "(array float)"], + [248, "gp", "(array basic)"], + [257, "gp", "(array basic)"] + ], + + "(method 3 array)":[ + [44, "gp", "(array int32)"], + [62, "gp", "(array uint32)"], + [80, "gp", "(array int64)"], + [98, "gp", "(array uint64)"], + [115, "gp", "(array int8)"], + [132, "gp", "(array int8)"], // bug in game + [150, "gp", "(array int16)"], + [168, "gp", "(array uint16)"], + [190, "gp", "(array uint128)"], + [203, "gp", "(array int32)"], + [225, "gp", "(array float)"], + [242, "gp", "(array basic)"] + ], + + "(method 2 handle)":[ + [10, "a3", "process"], + [11, "v1", "int"], + [15, "gp", "int"] + ], + + "(method 3 handle)":[ + [10, "gp", "int"] + ], + + "(method 0 cpu-thread)":[ + [13, "v0", "cpu-thread"] + ], + + "(method 0 dead-pool-heap)":[ + [60, "v0", "int"], // a lie, actually the 115 is an align16 constant propagated on addr of heap start. + [61, "v0", "dead-pool-heap"] + ], + + "(method 21 dead-pool-heap)":[ + [5, "v1", "pointer"], + [13, "a0", "pointer"], + [25, "v1", "pointer"] + ], + + "(method 5 dead-pool-heap)":[ + [3, "v1", "int"], + [3, "a0", "int"] + ], + + "remove-exit":[ + [0, "s6", "process"] + ], + + "(method 0 process)":[ + [12, "a0", "int"], + [13, "v0", "process"] + ], + + "inspect-process-heap":[ + [4, "s5", "basic"], + [17, "s5", "int"] + ], + + "return-from-thread-dead":[ + [0, "s6", "process"] + ], + + "(method 14 dead-pool)":[ + [23, "v1", "process"], // bad visit order with #f? + [28, "s4", "(pointer process-tree)"] // bug in real game, see gkernel.gc + ], + + "throw":[ + [20, "s4", "protect-frame"] // type case + ], + + "(method 0 protect-frame)":[ + [0, "a0", "int"], + [1, "v0", "protect-frame"] + ], + + "(method 9 process)":[ + [43, "s5", "process"] + ], + + "(method 10 process)":[ + [24, "s4", "protect-frame"] + ], + + "enter-state":[ + [67, "s0", "protect-frame"] + ], + + "name=":[ + [24, "a1", "symbol"], + [39, "a0", "symbol"] + ], + + "placeholder-do-not-add-below": [] +} diff --git a/decompiler/config/jak2/type_hints.jsonc b/decompiler/config/jak2/type_hints.jsonc deleted file mode 100644 index e9f9839b87..0000000000 --- a/decompiler/config/jak2/type_hints.jsonc +++ /dev/null @@ -1,112 +0,0 @@ -{ - "(method 2 array)":[ - [23, ["gp", "(array int32)"]], - [43, ["gp", "(array uint32)"]], - [63, ["gp", "(array int64)"]], - [83, ["gp", "(array uint64)"]], - [102, ["gp", "(array int8)"]], - [121, ["gp", "(array uint8)"]], - [141, ["gp", "(array int16)"]], - [161, ["gp", "(array uint16)"]], - [185, ["gp", "(array uint128)"]], - [203, ["gp", "(array int32)"]], - [222, ["gp", "(array float)"]], - [231, ["gp", "(array float)"]], - [248, ["gp", "(array basic)"]], - [257, ["gp", "(array basic)"]] - ], - - "(method 3 array)":[ - [44, ["gp", "(array int32)"]], - [62, ["gp", "(array uint32)"]], - [80, ["gp", "(array int64)"]], - [98, ["gp", "(array uint64)"]], - [115, ["gp", "(array int8)"]], - [132, ["gp", "(array int8)"]], // bug in game - [150, ["gp", "(array int16)"]], - [168, ["gp", "(array uint16)"]], - [190, ["gp", "(array uint128)"]], - [203, ["gp", "(array int32)"]], - [225, ["gp", "(array float)"]], - [242, ["gp", "(array basic)"]] - ], - - "(method 2 handle)":[ - [10, ["a3", "process"]], - [11, ["v1", "int"]], - [15, ["gp", "int"]] - ], - - "(method 3 handle)":[ - [10, ["gp", "int"]] - ], - - "(method 0 cpu-thread)":[ - [13, ["v0", "cpu-thread"]] - ], - - "(method 0 dead-pool-heap)":[ - [60, ["v0", "int"]], // a lie, actually the 115 is an align16 constant propagated on addr of heap start. - [61, ["a0", "pointer"], ["v0", "dead-pool-heap"]] - ], - - "(method 21 dead-pool-heap)":[ - [5, ["v1", "pointer"]], - [13, ["a0", "pointer"]], - [25, ["v1", "pointer"]] - ], - - "(method 5 dead-pool-heap)":[ - [3, ["v1", "int"], ["a0", "int"]] - ], - - "remove-exit":[ - [0, ["s6", "process"]] - ], - - "(method 0 process)":[ - [12, ["a0", "int"]], - [13, ["v0", "process"]] - ], - - "inspect-process-heap":[ - [4, ["s5", "basic"]], - [17, ["s5", "int"]] - ], - - "return-from-thread-dead":[ - [0, ["s6", "process"]] - ], - - "(method 14 dead-pool)":[ - [23, ["v1", "process"]], // bad visit order with #f? - [28, ["s4", "(pointer process-tree)"]] // bug in real game, see gkernel.gc - ], - - "throw":[ - [20, ["s4", "protect-frame"]] // type case - ], - - "(method 0 protect-frame)":[ - [0, ["a0", "int"]], - [1, ["v0", "protect-frame"]] - ], - - "(method 9 process)":[ - [43, ["s5", "process"]] - ], - - "(method 10 process)":[ - [24, ["s4", "protect-frame"]] - ], - - "enter-state":[ - [67, ["s0", "protect-frame"]] - ], - - "name=":[ - [24, ["a1", "symbol"]], - [39, ["a0", "symbol"]] - ] - -} \ No newline at end of file diff --git a/decompiler/config/jak2_ntsc_v1.jsonc b/decompiler/config/jak2_ntsc_v1.jsonc index ced7094c3e..1d40c30524 100644 --- a/decompiler/config/jak2_ntsc_v1.jsonc +++ b/decompiler/config/jak2_ntsc_v1.jsonc @@ -1,204 +1,89 @@ { - "game_version":2, + "game_version": 2, + "text_version": 20, - "dgo_names":["CGO/ART.CGO", -"CGO/KERNEL.CGO", -"CGO/ENGINE.CGO", -"CGO/GAME.CGO", -"CGO/COMMON.CGO", -"DGO/LWIDEB.DGO", -"DGO/LMEETBRT.DGO", -"DGO/CTA.DGO", -"DGO/PALOUT.DGO", -"DGO/STD.DGO", -"DGO/FOR.DGO", -"DGO/CASEXT.DGO", -"DGO/HIDEOUT.DGO", -"DGO/LWIDESTA.DGO", -"DGO/LRACELIT.DGO", -"DGO/CTB.DGO", -"DGO/KIOSK.DGO", -"DGO/DG1.DGO", -"DGO/FEB.DGO", -"DGO/DMI.DGO", -"DGO/ORACLE.DGO", -"DGO/LERLTESS.DGO", -"DGO/DRI.DGO", -"DGO/LBRNERMK.DGO", -"DGO/LRACECF.DGO", -"DGO/CTC.DGO", -"DGO/LTHRNOUT.DGO", -"DGO/FRA.DGO", -"DGO/LGARCSTA.DGO", -"DGO/MTN.DGO", -"DGO/INTROCST.DGO", -"DGO/DRB.DGO", -"DGO/ATE.DGO", -"DGO/LERROL.DGO", -"DGO/LTRNYSAM.DGO", -"DGO/LOUTCSTB.DGO", -"DGO/LASHTHRN.DGO", -"DGO/TOC.DGO", -"DGO/CFB.DGO", -"DGO/CAB.DGO", -"DGO/STC.DGO", -"DGO/STR.DGO", -"DGO/ATO.DGO", -"DGO/SEB.DGO", -"DGO/LPRSNCST.DGO", -"DGO/SWB.DGO", -"DGO/LPOWER.DGO", -"DGO/FOB.DGO", -"DGO/CIB.DGO", -"DGO/LSHUTTLE.DGO", -"DGO/LJAKDAX.DGO", -"DGO/FORDUMPC.DGO", -"DGO/LTRNTESS.DGO", -"DGO/TBO.DGO", -"DGO/THR.DGO", -"DGO/PRI.DGO", -"DGO/LKIDDOGE.DGO", -"DGO/NESTT.DGO", -"DGO/LWIDEC.DGO", -"DGO/SAG.DGO", -"DGO/NEB.DGO", -"DGO/COB.DGO", -"DGO/LBOMBBOT.DGO", -"DGO/DEMO.DGO", -"DGO/LRACEDF.DGO", -"DGO/LERLCHAL.DGO", -"DGO/LHIPOUT.DGO", -"DGO/OUTROCST.DGO", -"DGO/NES.DGO", -"DGO/PAR.DGO", -"DGO/LERBRNGD.DGO", -"DGO/MTX.DGO", -"DGO/FDA.DGO", -"DGO/LKEIRIFT.DGO", -"DGO/LWHACK.DGO", -"DGO/LJKDXASH.DGO", -"DGO/CAS.DGO", -"DGO/COA.DGO", -"DGO/LTESS.DGO", -"DGO/CFA.DGO", -"DGO/TOMBEXT.DGO", -"DGO/LCGUARD.DGO", -"DGO/TOE.DGO", -"DGO/PALBOSS.DGO", -"DGO/FRB.DGO", -"DGO/PAE.DGO", -"DGO/TITLE.DGO", -"DGO/FORDUMPD.DGO", -"DGO/D3A.DGO", -"DGO/DRILLMTN.DGO", -"DGO/PAC.DGO", -"DGO/LTENTOB.DGO", -"DGO/LRACEBF.DGO", -"DGO/LPROTECT.DGO", -"DGO/FEA.DGO", -"DGO/ONINTENT.DGO", -"DGO/STA.DGO", -"DGO/CGC.DGO", -"DGO/CMA.DGO", -"DGO/FDB.DGO", -"DGO/SKA.DGO", -"DGO/LTRNKRKD.DGO", -"DGO/CIA.DGO", -"DGO/TOB.DGO", -"DGO/LRACEDB.DGO", -"DGO/LDJAKBRN.DGO", -"DGO/TOA.DGO", -"DGO/STADBLMP.DGO", -"DGO/UND.DGO", -"DGO/LYSKDCD.DGO", -"DGO/HALFPIPE.DGO", -"DGO/LSAMERGD.DGO", -"DGO/PAS.DGO", -"DGO/LBBUSH.DGO", -"DGO/LPACKAGE.DGO", -"DGO/LINTCSTB.DGO", -"DGO/LPORTRUN.DGO", -"DGO/LASHGRD.DGO", -"DGO/CGB.DGO", -"DGO/D3B.DGO", -"DGO/STB.DGO", -"DGO/GARAGE.DGO", -"DGO/PORTWALL.DGO", -"DGO/LHELLDOG.DGO", -"DGO/SWE.DGO", -"DGO/LRACECB.DGO", -"DGO/GGA.DGO", -"DGO/TOD.DGO", -"DGO/MCN.DGO", -"DGO/SEW.DGO", -"DGO/VIN.DGO", -"DGO/CGA.DGO", -"DGO/CMB.DGO", -"DGO/LGUARD.DGO", -"DGO/CPA.DGO", -"DGO/LCITYLOW.DGO", -"DGO/LTENTOUT.DGO", -"DGO/UNB.DGO", -"DGO/CPO.DGO", -"DGO/CAP.DGO", -"DGO/CWI.DGO", -"DGO/CTYKORA.DGO", -"DGO/RUI.DGO", -"DGO/LSACK.DGO", -"DGO/CTYASHA.DGO", -"DGO/LPRTRACE.DGO", -"DGO/LWIDEA.DGO", -"DGO/HIPHOG.DGO", -"DGO/LSMYSBRT.DGO", -"DGO/LRACEBB.DGO", -"DGO/CASCITY.DGO", -"DGO/LYSAMSAM.DGO", -"DGO/VI1.DGO" -], + // if you want to filter to only some object names. + // it will make the decompiler much faster. + "allowed_objects": [], + "banned_objects": [], - "object_file_names":[], + //////////////////////////// + // CODE ANALYSIS OPTIONS + //////////////////////////// - "type_hints_file":"decompiler/config/jak2/type_hints.jsonc", - "anonymous_function_types_file":"decompiler/config/jak2/anonymous_function_types.jsonc", - "var_names_file":"decompiler/config/jak2/var_names.jsonc", - "label_types_file":"decompiler/config/jak2/label_types.jsonc", + // set to true to generate plain .asm files with MIPS disassembly, with no fancy decompilation. + // this is fast and should succeed 100% of the time. + "disassemble_code": false, - "str_file_names":[], + // Run the decompiler + "decompile_code": false, - "str_file_names_":[], - "allowed_objects":[], + //////////////////////////// + // DATA ANALYSIS OPTIONS + //////////////////////////// - "analyze_functions":false, - "analyze_expressions":false, - "function_type_prop":false, - "write_disassembly":true, - "write_hex_near_instructions":false, - "insert_lets":false, + // set to true to generate plain .asm files for data files. + // this will display most data as hex, but will add labels/references/type pointers/strings + // this generates a huge amount of output if you run it on the entire game. + "disassemble_data": false, - "run_ir2":false, + // unpack textures to assets folder + "process_tpages": false, + // unpack game text to assets folder + "process_game_text": true, + // unpack game count to assets folder + "process_game_count": false, - // if false, skips printing disassembly of object with functions, as these are usually large (~1 GB) and not interesting yet. - "disassemble_objects_without_functions":false, + /////////////////////////// + // WEIRD OPTIONS + /////////////////////////// - "process_tpages":false, - "process_game_text":false, - "process_game_count":false, - "dump_objs":true, - "write_func_json":false, + // these options are used rarely and should usually be left at false - // to write out data of each object file - "write_hexdump":false, - // to write out hexdump on the v3 only, to avoid the huge level data files. Only if write_hexdump is true. - "write_hexdump_on_v3_only":true, + // output a file type_defs.gc which is used for the types part of all-types.gc + "regenerate_all_types": false, - // to write out "scripts", which are currently just all the linked lists found. mostly a jak 2/3 thing - "write_scripts":true, + // generate the symbol_map.json file. + // this is a guess at where each symbol is first defined/used. + "generate_symbol_definition_map": false, - // Experimental Stuff - "find_basic_blocks":true, + // debug option for instruction decoder + "write_hex_near_instructions": false, - "types_with_bad_inspect_methods":[], - "no_type_analysis_functions_by_name":[], - "asm_functions_by_name":[], - "pair_functions_by_name":[] + // experimental tool to extract linked lists used for region scripting in Jak 2 and Jak 3. + "write_scripts": false, + + // hex dump of code/data files. + "hexdump_code": false, + "hexdump_data": false, + // dump raw obj files + "dump_objs": true, + // print control flow graph + "print_cfgs": false, + + // set to true for PAL versions. this will forcefully skip files that have some data missing at the end. + "is_pal": false, + + //////////////////////////// + // CONFIG FILES + //////////////////////////// + + "type_casts_file": "decompiler/config/jak2/type_casts.jsonc", + "anonymous_function_types_file": "decompiler/config/jak2/anonymous_function_types.jsonc", + "var_names_file": "decompiler/config/jak2/var_names.jsonc", + "label_types_file": "decompiler/config/jak2/label_types.jsonc", + "stack_structures_file": "decompiler/config/jak2/stack_structures.jsonc", + "hacks_file": "decompiler/config/jak2/hacks.jsonc", + "inputs_file": "decompiler/config/jak2/inputs.jsonc", + + // optional: a predetermined object file name map from a file. + // this will make decompilation naming consistent even if you only run on some objects. + "obj_file_name_map_file": "",//"goal_src/build/all_objs.json", + + //////////////////////////// + // LEVEL EXTRACTION + //////////////////////////// + + "levels_to_extract":[ + ] } diff --git a/decompiler/data/game_text.cpp b/decompiler/data/game_text.cpp index 49cb2416ab..2b0bcebf2e 100644 --- a/decompiler/data/game_text.cpp +++ b/decompiler/data/game_text.cpp @@ -43,14 +43,14 @@ DecompilerLabel get_label(ObjectFileData& data, const LinkedWord& word) { ) */ -GameTextResult process_game_text(ObjectFileData& data) { +GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version) { GameTextResult result; auto& words = data.linked_data.words_by_seg.at(0); std::vector read_words(words.size(), false); int offset = 0; - // type tage for game-text-info + // type tag for game-text-info if (words.at(offset).kind() != LinkedWord::TYPE_PTR || words.front().symbol_name() != "game-text-info") { assert(false); @@ -99,12 +99,15 @@ GameTextResult process_game_text(ObjectFileData& data) { } // escape characters - result.text[text_id] = convert_from_jak1_encoding(text.c_str()); + result.text[text_id] = version == GameTextVersion::JAK1_V1 + ? convert_from_jak1_encoding(text.c_str()) + : goos::get_readable_string(text.c_str()); // HACK! // remember what we read (-1 for the type tag) auto string_start = (text_label.offset / 4) - 1; // 8 for type tag and length fields, 1 for null char. - for (int j = 0; j < align16(8 + 1 + (int)text.length()) / 4; j++) { + for (int j = 0, m = align16(8 + 1 + (int)text.length()) / 4; + j < m && string_start + j < read_words.size(); j++) { read_words.at(string_start + j)++; } } diff --git a/decompiler/data/game_text.h b/decompiler/data/game_text.h index 9f6c1b2eb1..d26aa55495 100644 --- a/decompiler/data/game_text.h +++ b/decompiler/data/game_text.h @@ -12,7 +12,9 @@ struct GameTextResult { int total_chars = 0; }; -GameTextResult process_game_text(ObjectFileData& data); +enum class GameTextVersion { JAK1_V1 = 10, JAK1_V2 = 11, JAK2 = 20, JAK3 = 30, JAKX = 40 }; + +GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version); std::string write_game_text( const std::unordered_map>& data); -} // namespace decompiler \ No newline at end of file +} // namespace decompiler diff --git a/decompiler/main.cpp b/decompiler/main.cpp index c0f5eacbba..3c0de13ce9 100644 --- a/decompiler/main.cpp +++ b/decompiler/main.cpp @@ -121,7 +121,7 @@ int main(int argc, char** argv) { } if (config.process_game_text) { - auto result = db.process_game_text_files(); + auto result = db.process_game_text_files(config.text_version); if (!result.empty()) { file_util::write_text_file(file_util::get_file_path({"assets", "game_text.txt"}), result); } diff --git a/docs/markdown/lib.md b/docs/markdown/lib.md index 3b8acb2cd0..80b1b42ea6 100644 --- a/docs/markdown/lib.md +++ b/docs/markdown/lib.md @@ -16,14 +16,14 @@ GOAL's `printf`. The following destinations are currently supported: - `#t` - print to the listener. After the current game frame is over, this will be sent to the compiler and you can see it at the GOAL prompt. -- `0` - print to `stdout` in the runtime immediately. This won't be visible from within the compiler - you must look at the runtime to see it. This is useful for debugging if the runtime crashes before flushing the normal print buffer. +- `0` - print to `stdout` in the runtime immediately. This won't be visible from within the compiler - you must look at the runtime to see it. This is useful for debugging if the runtime crashes before flushing the normal print buffer. - `#f` - print to a new string allocated on the global heap. - a GOAL `string` object - append to an existing string - a GOAL `file-stream` object - currently unsupported but eventually may allow printing into a file somewhere -The global variable `*print-column*` can be used to automatically print at a certain indentation. The very first thing printed during a frame will not have the indentation applied. +The global variable `*print-column*` can be used to automatically print at a certain indentation. The very first thing printed during a frame will not have the indentation applied. -The format string escape sequences all start with `~`, then have arguments (possibly none), then have a single character code. The arguments look like: +The format string escape sequences all start with `~`, then have arguments (possibly none), then have a single character code. The arguments look like: - `~A`, the `A` code with no arguments - `~12A`, the `A` code with an integer argument of `12` - `~'zA`, the `A` code with a character argument of `z` @@ -47,7 +47,7 @@ Replace with a C-style string given in `args`. Note that this will not work on a #### `~A` or `~a` -Print a boxed object given in `args`. Uses the `print` method. Can take optional arguments for length and padding character. If the `print` method gives something shorter than the length argument, it will be padded on the left with the padding character (default is space). If the `print` method gives something too long, it will be truncated on the right. The last character printed will be changed to `~` to indicate it was truncated here. +Print a boxed object given in `args`. Uses the `print` method. Can take optional arguments for length and padding character. If the `print` method gives something shorter than the length argument, it will be padded on the left with the padding character (default is space). If the `print` method gives something too long, it will be truncated on the right. The last character printed will be changed to `~` to indicate it was truncated here. There is an option to left justify instead but I don't think there's a way to turn it on. @@ -61,7 +61,7 @@ Print a single character (GOAL `uint8` or `int8` type) #### `~P` or `~p` -Print an object, similar to `~A`, but does not have optional arguments for length or padding. Instead, there is an optional argument to give a type name, then use that types `print` method. This is useful for printing non-boxed objects. If no type name is given, behaves like `~A`. +Print an object, similar to `~A`, but does not have optional arguments for length or padding. Instead, there is an optional argument to give a type name, then use that types `print` method. This is useful for printing non-boxed objects. If no type name is given, behaves like `~A`. #### `~I` or `~i` @@ -69,7 +69,7 @@ Like `~P`, but uses the inspect method instead. #### `~Q` or `~q` -Likely was supposed to be for printing 128-bit integers stored in registers, but will always prints `0`. The `format` function is written in C using varargs, which doesn't support 128-bit register values. +Likely was supposed to be for printing 128-bit integers stored in registers, but will always prints `0`. The `format` function is written in C using varargs, which doesn't support 128-bit register values. #### `~B` or `~b` @@ -89,19 +89,19 @@ Print floating point. Will print 4 digits after the decimal and pad with space t #### `~f` -Print floating point. Takes optional arguments for pad-length (default don't pad), pad-character (default space), and precision (default 4). +Print floating point. Takes optional arguments for pad-length (default don't pad), pad-character (default space), and precision (default 4). #### `~R` or `~r` -Like `~f` but scales in-game rotation units to degrees. The float `65536.0` is 360 degrees. +Like `~f` but scales in-game rotation units to degrees. The float `65536.0` is 360 degrees. #### `~M` or `~m` -Like `~f` but scales in-game distance units to meters. The float `4096.0` is 1 meter. +Like `~f` but scales in-game distance units to meters. The float `4096.0` is 1 meter. #### `~E` or `~e` -Like `~f` for argument, but takes an integer time-code as an input and scales time-code units to seconds. There are 300 ticks / second, which is the smallest number which has an integer number of ticks per NTSC and PAL frame. Something very weird happens when the input is negative? +Like `~f` for argument, but takes an integer time-code as an input and scales time-code units to seconds. There are 300 ticks / second, which is the smallest number which has an integer number of ticks per NTSC and PAL frame. Something very weird happens when the input is negative? #### `~T` or `~t` @@ -109,7 +109,7 @@ Insert a tab character. #### Pass Through Codes -Some codes will be passed through automatically, along with any arguments. This will also pass through arguments of `+` or `-`. I believe that these options could later be interpreted by the code for printing on-screen characters. +Some codes will be passed through automatically, along with any arguments. This will also pass through arguments of `+` or `-`. I believe that these options could later be interpreted by the code for printing on-screen characters. The pass through codes are `H,J,K,L,N,V,W,Y,Z,h,j,k,l,n,v,w,y,z`. @@ -160,7 +160,7 @@ Example: ) ``` -will print `hello ` only and the value of the entire `block` form is `7`. The type of the `block` is the most specific type that describes all of the possible return values from any `return-from` or from reaching the end (even if its technically not possible to reach the end). In the case above, the possible return types are `int` and `string`, so the return type of the whole block is `object`, the lowest common ancestor type of `int` and `string`. +will print `hello ` only and the value of the entire `block` form is `7`. The type of the `block` is the most specific type that describes all of the possible return values from any `return-from` or from reaching the end (even if its technically not possible to reach the end). In the case above, the possible return types are `int` and `string`, so the return type of the whole block is `object`, the lowest common ancestor type of `int` and `string`. Block is used rarely, and possibly almost never? @@ -172,7 +172,7 @@ Exit a `block` or function early. (return-from block-name value) ``` -Looks up the block and exits from it with the value. You can exit out nested blocks. If you are enclosed in multiple blocks with the same name, exits from the inner-most one with a matching name. Everything in a function is wrapped in a block named `#f`, so you can use `(return-from #f x)` to return early from a function with `x`. When using this form, it may change the return type of the function or block. The return type will be the lowest common ancestor type of all written return paths. If there is an unreachable return path, it will still be considered. +Looks up the block and exits from it with the value. You can exit out nested blocks. If you are enclosed in multiple blocks with the same name, exits from the inner-most one with a matching name. Everything in a function is wrapped in a block named `#f`, so you can use `(return-from #f x)` to return early from a function with `x`. When using this form, it may change the return type of the function or block. The return type will be the lowest common ancestor type of all written return paths. If there is an unreachable return path, it will still be considered. Example @@ -241,7 +241,7 @@ This form is reserved by the compiler. Internally all forms in a file are groupe ### GOAL "Two Element" Conditions -These are `!=`, `eq?`, `neq?`, `=`, `>`, `<`, `>=`, `<=`. The default is to compare the two objects as unsigned 64-bit integers, unless a special case is hit. The special case is determined by the type of the __first__ argument: +These are `!=`, `eq?`, `neq?`, `=`, `>`, `<`, `>=`, `<=`. The default is to compare the two objects as unsigned 64-bit integers, unless a special case is hit. The special case is determined by the type of the __first__ argument: - Floating point: if second argument is a number, convert to floating point. Use floating point comparisons - Binteger: convert first argument to integer. If second argument is a number, convert to integer. Use signed integer comparisons - Integer: If second argument is a number, convert to integer. Use signed integer comparison @@ -282,7 +282,7 @@ Examples: (when-goto (is-player-dead?) some-label) ``` -Jump to `destination` if the condition is truthy (not `#f`). This ends up generating much better code than `(if condition (goto x))`. +Jump to `destination` if the condition is truthy (not `#f`). This ends up generating much better code than `(if condition (goto x))`. Like normal `goto`, this isn't used much outside of macros. @@ -294,11 +294,11 @@ A normal Lisp/Scheme `cond`. (cond (test clause...)...) ``` -Evaluates `test`s until one is truthy. Then evaluates all `clause`s in that case and returns the value of the last one. Optionally there can be a case with `else` as the test which runs if no other cases match. This must be the last case. +Evaluates `test`s until one is truthy. Then evaluates all `clause`s in that case and returns the value of the last one. Optionally there can be a case with `else` as the test which runs if no other cases match. This must be the last case. If there is no `else`, and no cases match, return `#f`. (is it always `#f`?) -The return type is the lowest common ancestor type of all cases. Note that for a `cond` without `else`, the possible return value of `#f` is __not__ considered when determining the return type. So: +The return type is the lowest common ancestor type of all cases. Note that for a `cond` without `else`, the possible return value of `#f` is __not__ considered when determining the return type. So: ```lisp (print-type @@ -320,7 +320,7 @@ A normal Lisp/Scheme `if`. (if test true-case [false-case]) ``` -The value of the entire statement is the value of the taken case. The false case can be left out. If the condition evaluates to false and the false case is left out, `#f` is returned. The return type follows the same logic as `cond`, as `if` is a macro using `cond`. +The value of the entire statement is the value of the taken case. The false case can be left out. If the condition evaluates to false and the false case is left out, `#f` is returned. The return type follows the same logic as `cond`, as `if` is a macro using `cond`. ### `when` @@ -401,7 +401,7 @@ Example: ) ``` -Note, if you define multiple variables in a `let`, you cannot refer to variables defined previously in the same `let`. In the example above, `count-2`'s value couldn't be defined in terms of `count-1` for example. See `let*`. +Note, if you define multiple variables in a `let`, you cannot refer to variables defined previously in the same `let`. In the example above, `count-2`'s value couldn't be defined in terms of `count-1` for example. See `let*`. ### `let*` @@ -444,7 +444,7 @@ Example: ) ``` -Define a new function with the given name. Note that until the `defun` itself executes, the function __cannot be used!__. So don't call functions before the `defun`. This is unlike C, where you can forward declare a function and use it before the actual definition. +Define a new function with the given name. Note that until the `defun` itself executes, the function __cannot be used!__. So don't call functions before the `defun`. This is unlike C, where you can forward declare a function and use it before the actual definition. There is an optional docstring. Currently the docstring is just thrown away but in the future we could save them and and generate documentation or something. @@ -494,11 +494,11 @@ arg = (arg-name arg-type)|arg-name The `:name` option is only used for debugging the compiler - it cannot be accessed or referenced outside of internal compiler debugging features. It should be ignored unless you are debugging the compiler. -The `:inline-only` flag defaults to `#f`, but can be set to `#t` to force the compiler to not generate x86-64 code for the function. In this case, the lambda cannot be used as a function pointer/GOAL `function` object. This is used in the `let` macro and not really useful for general programming. If the flag is `#f` (default value), it will generate and store an x86-64 function, regardless of if the function is ever called. +The `:inline-only` flag defaults to `#f`, but can be set to `#t` to force the compiler to not generate x86-64 code for the function. In this case, the lambda cannot be used as a function pointer/GOAL `function` object. This is used in the `let` macro and not really useful for general programming. If the flag is `#f` (default value), it will generate and store an x86-64 function, regardless of if the function is ever called. -The `:segment` option defaults to `main`, unless the `lambda` is defined in a function in the `debug` segment, in which case it defaults to `debug`. It can be overridden by this flag. This picks the segment of the object file where the function will be stored. +The `:segment` option defaults to `main`, unless the `lambda` is defined in a function in the `debug` segment, in which case it defaults to `debug`. It can be overridden by this flag. This picks the segment of the object file where the function will be stored. -The arguments default to type of `object` if no type is provided. In the case where a lambda is used immediately (a `let`) the compiler will propagate more specific types. This is why you don't have to give types when using `let`. +The arguments default to type of `object` if no type is provided. In the case where a lambda is used immediately (a `let`) the compiler will propagate more specific types. This is why you don't have to give types when using `let`. A GOAL lambda has three purposes: 1. Generate a function as a "real" x86-64 function. @@ -509,7 +509,7 @@ __Example of 1:__ ``` (sort my-list (lambda ((x int) (y int) (< x y)))) ``` -We create a real x86-64 function to pass to the `sort` function. In this case you should specify types - the default of `object` is not suitable. +We create a real x86-64 function to pass to the `sort` function. In this case you should specify types - the default of `object` is not suitable. The other two cases are handled by `let` and `defun` macros, and shouldn't show up in other places, so they are left out. @@ -534,7 +534,7 @@ Example: - `inline` means "inline whenever possible". See function inlining section for why inlining may be impossible in some cases. - `allow-inline` or `disallow-inline`. You can control if inlining is allowed, though it is not clear why I thought this would be useful. Currently the default is to allow always. - `print-asm` if codegen runs on this function (`:color #t`), disassemble the result and print it. This is intended for compiler debugging. -- `asm-func` will disable the prologue and epilogue from being generated. You need to include your own `ret` instruction or similar. The compiler will error if it needs to use the stack for a stack variable or a spilled register. The coloring system will not use callee saved registers and will error if you force it to use one. As a result, complicated GOAL expression may fail inside an `asm-func` function. The intent is to use it for context switching routines inside in the kernel, where you may not be able to use the stack, or may not want to return with `ret`. The return type of an `asm-func` must manually be specified as the compiler doesn't automatically put the result in the return register and cannot do type analysis to figure out the real return type. +- `asm-func` will disable the prologue and epilogue from being generated. You need to include your own `ret` instruction or similar. The compiler will error if it needs to use the stack for a stack variable or a spilled register. The coloring system will not use callee saved registers and will error if you force it to use one. As a result, complicated GOAL expression may fail inside an `asm-func` function. The intent is to use it for context switching routines inside in the kernel, where you may not be able to use the stack, or may not want to return with `ret`. The return type of an `asm-func` must manually be specified as the compiler doesn't automatically put the result in the return register and cannot do type analysis to figure out the real return type. - `allow-saved-regs` allows an `asm-func`'s coloring to use saved registers without an error. Stacks spills are still an error. The compiler will not automatically put things in a saved register, you must do this yourself. The move eliminator may still be used on your variables which use saved registers, so you should be careful if you really care about where saved variables are used. This form will probably get more options in the future. @@ -547,7 +547,7 @@ Declare variables local to a function, without an initial value. This will be us (local-vars (name type-spec)...) ``` -The name can be any valid symbol. The scope of the variable is _always_ the function scope. Other scopes inside a function will always hide variables declared with `local-vars`. The type can be any GOAL typespec. If you use `float`, you get a floating point register, otherwise you get a normal GPR. +The name can be any valid symbol. The scope of the variable is _always_ the function scope. Other scopes inside a function will always hide variables declared with `local-vars`. The type can be any GOAL typespec. If you use `float`, you get a floating point register, otherwise you get a normal GPR. It's recommended to avoid using this form. @@ -628,7 +628,7 @@ Example: ## Math Forms -Math forms will look at the type of the first argument to determine the "mode". So if you have `(+ 1 1.2)`, it will convert the `1.2` to an integer, do the add, and return an integer. +Math forms will look at the type of the first argument to determine the "mode". So if you have `(+ 1 1.2)`, it will convert the `1.2` to an integer, do the add, and return an integer. ### `+` @@ -773,7 +773,7 @@ Get element from pair (cdr some-pair) ``` -The type of the result is always `object`, as pairs can hold any `object`. The type-check for `car` and `cdr` is relaxed - it allows it to be applied to any `pair` or `object`. The reason for allowing `object` is so you can write `(car (car x))` instead of `(car (the pair (car x)))`. However, if the argument to `car` is not a `pair`, you will get garbage or a crash. +The type of the result is always `object`, as pairs can hold any `object`. The type-check for `car` and `cdr` is relaxed - it allows it to be applied to any `pair` or `object`. The reason for allowing `object` is so you can write `(car (car x))` instead of `(car (the pair (car x)))`. However, if the argument to `car` is not a `pair`, you will get garbage or a crash. ### `new` @@ -807,7 +807,7 @@ Convert between types, doing the expected thing for number conversions. (the type thing) ``` -If the `type` and the `thing` are both numbers, it will automatically convert between the different numeric types as needed. In all other cases, it does a dangerous `reinterpret_cast`. cppreference.com explains this idea clearly with "Converts between types by reinterpreting the underlying bit pattern." +If the `type` and the `thing` are both numbers, it will automatically convert between the different numeric types as needed. In all other cases, it does a dangerous `reinterpret_cast`. cppreference.com explains this idea clearly with "Converts between types by reinterpreting the underlying bit pattern." If the `thing` is a number: - If `type` is `binteger`, convert the number to a `binteger` @@ -844,7 +844,7 @@ There are some weird edge cases with `the` that are worth mentioning, if you try ```lisp (set! (-> (the (pointer uint8) x)) 1) ;; OK, not casting the actual value (set! (the int (-> obj x)) 1) ;; NOT OK. Int is a value type -;; Will actually work if x is already an int/uint, and with non-numeric values types like pointer. Avoid just to be safe. +;; Will actually work if x is already an int/uint, and with non-numeric values types like pointer. Avoid just to be safe. (set! (the string (-> obj x)) "test") ;; OK, string is a basic, which is a reference type. ``` @@ -904,11 +904,11 @@ Not implemented well yet. ## Inline Assembly Forms -In general, assembly forms have a name that begins with a `.`. They all evaluate to `none` and copy the form of an x86-64 instruction. For example `(.sub dst src)`. A destination must be a settable register (ok if it's spilled). So you can't do something like `(.sub (-> obj field) x)`. Instead, do `(set! temp (-> obj field))`, `(.sub temp x)`, `(set! (-> obj field) temp)`. The sources can be any expression, or a register. This allows you to mix high-level code with assembly easily, like `(.mov rax (-> obj field))` or `(.push (+ 1 (-> obj field)))`. +In general, assembly forms have a name that begins with a `.`. They all evaluate to `none` and copy the form of an x86-64 instruction. For example `(.sub dst src)`. A destination must be a settable register (ok if it's spilled). So you can't do something like `(.sub (-> obj field) x)`. Instead, do `(set! temp (-> obj field))`, `(.sub temp x)`, `(set! (-> obj field) temp)`. The sources can be any expression, or a register. This allows you to mix high-level code with assembly easily, like `(.mov rax (-> obj field))` or `(.push (+ 1 (-> obj field)))`. -By default, assembly forms work with the coloring system. This means that assembly and high level expression can be mixed together without clobbering each other. It also means use of callee-saved registers will cause them to be backed up/restored in the function prologue and epilogue. Use of weird registers like `r15`, `r14`, and `rsp` works as you would expect with the coloring system. +By default, assembly forms work with the coloring system. This means that assembly and high level expression can be mixed together without clobbering each other. It also means use of callee-saved registers will cause them to be backed up/restored in the function prologue and epilogue. Use of weird registers like `r15`, `r14`, and `rsp` works as you would expect with the coloring system. -But you can also request to skip this with `:color #f` option, like `(.push my-reg-var :color #f)`. Be very careful with this. The `:color #f` option will only work with register variables from `rlet` which have a manually specified register. It will entirely bypass the coloring system and use this register. Use of this near high level GOAL variables is extremely dangerous and should be done very carefully or avoided, as the GOAL compiler will not know that you could be modifying its registers. In a form with `:color #f`, you cannot use higher level code or variables - all variables must be defined in `rlet`s. This is because higher level expressions and variables cannot be used without the coloring system. +But you can also request to skip this with `:color #f` option, like `(.push my-reg-var :color #f)`. Be very careful with this. The `:color #f` option will only work with register variables from `rlet` which have a manually specified register. It will entirely bypass the coloring system and use this register. Use of this near high level GOAL variables is extremely dangerous and should be done very carefully or avoided, as the GOAL compiler will not know that you could be modifying its registers. In a form with `:color #f`, you cannot use higher level code or variables - all variables must be defined in `rlet`s. This is because higher level expressions and variables cannot be used without the coloring system. ### `rlet` @@ -918,12 +918,12 @@ But you can also request to skip this with `:color #f` option, like `(.push my-r ) ``` -Create register variables. You can optionally specify a register with the `:reg` option and a register name like `rax` or `xmm3`. The initial value of the register is not set. If you don't specify a register, a GPR will be chosen for you by the coloring system and it will behave like a `let`. If you don't specify a register, you can specify a register class (`gpr`, a normal 64-bit integer register; `fpr`, a 32-bit single precision float; or `vf`, and 128-bit floating point vector register) and the compiler will pick a GPR or XMM for you. +Create register variables. You can optionally specify a register with the `:reg` option and a register name like `rax` or `xmm3`. The initial value of the register is not set. If you don't specify a register, a GPR will be chosen for you by the coloring system and it will behave like a `let`. If you don't specify a register, you can specify a register class (`gpr`, a normal 64-bit integer register; `fpr`, a 32-bit single precision float; or `vf`, and 128-bit floating point vector register) and the compiler will pick a GPR or XMM for you. If you pick a callee-saved register and use it within the coloring system, the compiler will back it up for you in the prologue and restore it in the epilogue. If you pick a special register like `rsp`, it won't be backed up. -Inside the `rlet`, all uses of `var-name` will always be in the given register. If the variable goes dead (or is never live), the compiler may reuse the register as it wants. The compiler may also spill the variable onto the stack. Of course, if you are in an `asm-func`, the stack will never be used. Be extremely careful about using "normal" registers without the coloring system and with higher-level code as the compiler may use your "normal" register as a temporary. If you read the value of a register and use the coloring system, the variable will then be alive starting at the beginning of the function, and will make that register unavailable to the compiler and other `rlet`s that occur before. This is useful to preserve the value of a temporary register if needed, but can also be undesirable in other cases. If you add the `:reset-here #t` flag, it will make the variable dead until the start of the `rlet`. It "resets" the value of the register in the coloring system at the start of the `rlet`. The default value is false. It is recommended to keep the default value when accessing specific registers that are also normally used by the compiler. For special registers like `rsp`, `r15`, `r14`, and `r13`, if you plan to use them with the coloring system, it is recommended to set the `reset-here` flag. +Inside the `rlet`, all uses of `var-name` will always be in the given register. If the variable goes dead (or is never live), the compiler may reuse the register as it wants. The compiler may also spill the variable onto the stack. Of course, if you are in an `asm-func`, the stack will never be used. Be extremely careful about using "normal" registers without the coloring system and with higher-level code as the compiler may use your "normal" register as a temporary. If you read the value of a register and use the coloring system, the variable will then be alive starting at the beginning of the function, and will make that register unavailable to the compiler and other `rlet`s that occur before. This is useful to preserve the value of a temporary register if needed, but can also be undesirable in other cases. If you add the `:reset-here #t` flag, it will make the variable dead until the start of the `rlet`. It "resets" the value of the register in the coloring system at the start of the `rlet`. The default value is false. It is recommended to keep the default value when accessing specific registers that are also normally used by the compiler. For special registers like `rsp`, `r15`, `r14`, and `r13`, if you plan to use them with the coloring system, it is recommended to set the `reset-here` flag. Here is an example of using an `rlet` to access registers: @@ -943,7 +943,7 @@ Here is an example of using an `rlet` to access registers: (.sub dest src [:color #t|#f]) ``` -x86-64 subtraction (64-bit). If coloring is on (the default), the `dest` must be a settable register (`rlet` var, `let` var, function argument, ...). It can't be a place like a symbol, field, stack variable, etc. If coloring is off, both `src` and `dest` must be registers defined and constrained in an enclosing `rlet`. +x86-64 subtraction (64-bit). If coloring is on (the default), the `dest` must be a settable register (`rlet` var, `let` var, function argument, ...). It can't be a place like a symbol, field, stack variable, etc. If coloring is off, both `src` and `dest` must be registers defined and constrained in an enclosing `rlet`. Example: @@ -987,7 +987,7 @@ Jump-register. Jumps to the address given. The address is treated as a 64-bit po (.load-sym dest symbol-name [:sext #t|#f] [:color #t|#f]) ``` -Load the value of a symbol into a register. By default, it will look at the type of the symbol to determine if it should be sign extended or not. You can override this with the `:sext` option if needed. The symbol must be known to the type system. +Load the value of a symbol into a register. By default, it will look at the type of the symbol to determine if it should be sign extended or not. You can override this with the `:sext` option if needed. The symbol must be known to the type system. ### `.push` @@ -995,7 +995,7 @@ Load the value of a symbol into a register. By default, it will look at the typ (.push src [:color #t|#f]) ``` -The x86-64 push instruction. Does a 64-bit GPR. The `src` can be any expression that can be put in a gpr if color is on. Otherwise it must be a register defined and constrained in an enclosing `rlet`. +The x86-64 push instruction. Does a 64-bit GPR. The `src` can be any expression that can be put in a gpr if color is on. Otherwise it must be a register defined and constrained in an enclosing `rlet`. ### `.pop` @@ -1003,7 +1003,7 @@ The x86-64 push instruction. Does a 64-bit GPR. The `src` can be any expression (.pop dst [:color #t|#f]) ``` -The x86-64 pop instruction. Does a 64-bit GPR. The `dst` can be any expression which evaluates to a settable register if color is on. Otherwise it must be a register defined and constrained in an enclosing `rlet`. +The x86-64 pop instruction. Does a 64-bit GPR. The `dst` can be any expression which evaluates to a settable register if color is on. Otherwise it must be a register defined and constrained in an enclosing `rlet`. ### `.ret` @@ -1019,7 +1019,7 @@ The x86-64 ret instruction. The color option does nothing. This is not recognize (.mov dst src [:color #t|#f]) ``` -Move between two registers. The `dst` should be a register (either `rlet` or `let` variable), and the `src` can be a register or any expression. The following moves are supported: +Move between two registers. The `dst` should be a register (either `rlet` or `let` variable), and the `src` can be a register or any expression. The following moves are supported: - `gpr` to `gpr` - `fpr` to `fpr` (only moves lower 32-bits of the xmms, uses `movss`) - `vf` to `vf` (moves all 128-bits of the xmms, uses `vmovaps`) @@ -1061,7 +1061,7 @@ Inserts a `FWAIT` assembly instruction, x86 does not require as much synchroniza Load a vector float register from `src-loc`. The `dst-reg` must be a vector float register. The `src-loc` can be a gpr containing a GOAL pointer or expression which gives a GOAL pointer. There is no type checking on the `src-loc` so be careful. The load uses `vmovaps`, so the source must be 16-byte aligned. -If the source is in the form `base-reg + constant-offset`, like from a `(&-> my-object my-inline-vector-field)`, the constant offset will be folded into the load instruction like `vmovaps xmm1, [r15 + rax + 12]`. An explicit offset can be provided via the `:offset` keyword, and will be used if applicable. +If the source is in the form `base-reg + constant-offset`, like from a `(&-> my-object my-inline-vector-field)`, the constant offset will be folded into the load instruction like `vmovaps xmm1, [r15 + rax + 12]`. An explicit offset can be provided via the `:offset` keyword, and will be used if applicable. If the source is an immediate `(new 'static ...)` form that results in a statically allocated variable, it will use `RIP` relative addressing (32-bit immediate) form. This means that the code: @@ -1093,9 +1093,9 @@ All the three operand forms work similarly. You can do something like `(.add.vf - `min` - `max` -An optional `:mask` value can be provided as a binary number between 0-15 (inclusive). This determines _which_ of the resulting elements will be committed to the destination vector. For example, `:mask #b1011` means that the `w`, `y` and `x` results will be committed. Note that the components are defined left-to-right which may be a little counter-intuitive -- `w` is the left-most, `x` is the right-most. This aligns with the PS2's VU implementation. +An optional `:mask` value can be provided as a binary number between 0-15 (inclusive). This determines _which_ of the resulting elements will be committed to the destination vector. For example, `:mask #b1011` means that the `w`, `y` and `x` results will be committed. Note that the components are defined left-to-right which may be a little counter-intuitive -- `w` is the left-most, `x` is the right-most. This aligns with the PS2's VU implementation. -Additionally, all of these operations support defining a single `broadcast-element`. This can be one of the 4 vector components `x|y|z|w`. Take the following for an example: `(.add.x.xyzw vf10, vf20, vf30)`, translates into: +Additionally, all of these operations support defining a single `broadcast-element`. This can be one of the 4 vector components `x|y|z|w`. Take the following for an example: `(.add.x.xyzw vf10, vf20, vf30)`, translates into: ```cpp vf10[x] = vf20[x] + vf30[x] @@ -1114,9 +1114,9 @@ There are a few functions that will perform multiple operations involving the ac - `add.mul` - Calculate the product of `src0` and `src1` and add it to the value of `acc` => `acc + (src0 * src1)` - `sub.mul` - Calculate the product of `src0` and `src1` and subtract it from the value of `acc` => `acc - (src0 * src1)` -An optional `:mask` value can be provided as a binary number between 0-15 (inclusive). This determines _which_ of the resulting elements will be committed to the destination vector. For example, `:mask #b1011` means that the `w`, `y` and `x` results will be committed. Note that the components are defined left-to-right which may be a little counter-intuitive -- `w` is the left-most, `x` is the right-most. This aligns with the PS2's VU implementation. +An optional `:mask` value can be provided as a binary number between 0-15 (inclusive). This determines _which_ of the resulting elements will be committed to the destination vector. For example, `:mask #b1011` means that the `w`, `y` and `x` results will be committed. Note that the components are defined left-to-right which may be a little counter-intuitive -- `w` is the left-most, `x` is the right-most. This aligns with the PS2's VU implementation. -Additionally, all of these operations support defining a single `broadcast-element`. This can be one of the 4 vector components `x|y|z|w`. +Additionally, all of these operations support defining a single `broadcast-element`. This can be one of the 4 vector components `x|y|z|w`. ### `.abs.vf` @@ -1140,9 +1140,9 @@ Calculates the quotient of _one_ of `src1`'s components specified by `fsf` _one_ Calculates the square-root of _one_ of `src`'s components specified by `ftf` and stores in every component of `dst` -These instructions are interesting as they behave differently than the other math operations. In the original VU, results were stored in a seperate `Q` register, which was _NOT_ 128-bit. Instead it was a 32-bit register, meaning you have to pick which component from `src` you want to use. `:fsf` and `:ftf` are used to accomplish this, as usual, this is through bit flags -- `00` will select `x` and `11` will select `w`. +These instructions are interesting as they behave differently than the other math operations. In the original VU, results were stored in a seperate `Q` register, which was _NOT_ 128-bit. Instead it was a 32-bit register, meaning you have to pick which component from `src` you want to use. `:fsf` and `:ftf` are used to accomplish this, as usual, this is through bit flags -- `00` will select `x` and `11` will select `w`. -As `dst` is just yet another vector / xmm register in x86, things are kept simple and the quotient is copied to _all_ packed single-float positions. This allows: +As `dst` is just yet another vector / xmm register in x86, things are kept simple and the quotient is copied to _all_ packed single-float positions. This allows: - Selecting any of the resulting vector slots will be equal to the quotient. - Since the low-floating-point (X) is defined, the xmm register should function as expected for normal math operations @@ -1152,21 +1152,26 @@ As `dst` is just yet another vector / xmm register in x86, things are kept simpl (.outer.product.vf dst src1 src2 [:color #t|#f]) ``` -Calculates the outer-product of `src1` and `src2` and stores the result in `dst`. _ONLY_ the x,y,z components are considered, and `dst`'s `w` component will be untouched. The following example illustrates what the outer-product is: +Calculates the outer-product of `src1` and `src2` and stores the result in `dst`. _ONLY_ the x,y,z components are considered, and `dst`'s `w` component will be untouched. The following example illustrates what the outer-product is: Given 2 vectors `V1 = <1,2,3,4>` and `V2 = <5,6,7,8>` and assume `VDEST = <0, 0, 0, 999>` The outer product is computed like so (only x,y,z components are operated on): -`x = (V1y * V2z) - (V2y * V1z) => (2 * 7) - (6 * 3) => -4` - -`y = (V1z * V2x) - (V2z * V1x) => (3 * 5) - (7 * 1) => 8` - -`z = (V1x * V2y) - (V2x * V1y) => (1 * 6) - (5 * 2) => -4` - -`w = N/A, left alone => 999` +``` +x = (V1y * V2z) - (V2y * V1z) => (2 * 7) - (6 * 3) => -4 +y = (V1z * V2x) - (V2z * V1x) => (3 * 5) - (7 * 1) => 8 +z = (V1x * V2y) - (V2x * V1y) => (1 * 6) - (5 * 2) => -4 +w = N/A, left alone => 999 +``` > `VDEST = <-4, 8, -4, 999>` +This is equivalent to the following on the PS2: +```mips +vopmula.xyz acc src1 src2 +vopmsub.xyz dst src2 src1 +``` + ### `.blend.vf` ```lisp @@ -1182,7 +1187,7 @@ Wrapper around `vblendps` (VEX xmm128 version) instruction. The `mask` must eval (.ftoi.vf dst src [:mask mask-val] [:color #t|#f]) ``` -Wrapper around `vcvtdq2ps` and `vcvtps2dq` to convert packed 32-bit signed integers to packed 32-bit floats and back. The `mask` and `color` arguments behave like other assembly operations. +Wrapper around `vcvtdq2ps` and `vcvtps2dq` to convert packed 32-bit signed integers to packed 32-bit floats and back. The `mask` and `color` arguments behave like other assembly operations. ### `.pw.sra`, `.pw.srl`, and `pw.sll` @@ -1205,7 +1210,7 @@ Wrapper around `vpsrld`, `vpsrad`, and `vpslld`. Does shifts on each of the 4 32 (.ppach dest src0 src1) ``` -Equivalents of the EE's MMI instructions with the same name. These can only be used on 128-bit variables. Most map to single x86 instructions: +Equivalents of the EE's MMI instructions with the same name. These can only be used on 128-bit variables. Most map to single x86 instructions: - `pextlw` is `VPUNPCKLDQ` (sources swapped) - `pextuw` is `VPUNPCKHDQ` (sources swapped) - `pcpyld` is `VPUNPCKLQDQ` (sources swapped) diff --git a/goal_src/engine/anim/bones-h.gc b/goal_src/engine/anim/bones-h.gc index f3d61e6597..201ece625e 100644 --- a/goal_src/engine/anim/bones-h.gc +++ b/goal_src/engine/anim/bones-h.gc @@ -28,9 +28,9 @@ ) (deftype bone-regs (structure) - ((joint-ptr (pointer joint) :offset-assert 0) - (bone-ptr (pointer bone) :offset-assert 4) - (num-bones uint32 :offset-assert 8) + ((joint-ptr (inline-array joint) :offset-assert 0) + (bone-ptr (inline-array bone) :offset-assert 4) + (num-bones uint32 :offset-assert 8) ) :method-count-assert 9 :size-assert #xc @@ -44,7 +44,7 @@ (distance vector :inline :offset-assert 160) (next-tag dma-packet :inline :offset-assert 176) (dma-buf dma-buffer :offset-assert 192) - (sink-group basic :offset-assert 196) + (sink-group dma-foreground-sink-group :offset-assert 196) (next-pris dma-packet :offset-assert 200) (next-merc dma-packet :offset-assert 204) (wait-count uint32 :offset-assert 208) @@ -110,7 +110,7 @@ :flag-assert #x900000084 ) -(define *merc-globals* #f) +(define *merc-globals* (the-as merc-globals #f)) (deftype shadow-dma-packet (structure) ((tag generic-merc-tag :inline :offset-assert 0) diff --git a/goal_src/engine/anim/bones.gc b/goal_src/engine/anim/bones.gc index 394e98aef1..c64b0f8d30 100644 --- a/goal_src/engine/anim/bones.gc +++ b/goal_src/engine/anim/bones.gc @@ -4,3 +4,6 @@ ;; name: bones.gc ;; name in dgo: bones ;; dgos: GAME, ENGINE + +(define-extern draw-bones (function draw-control dma-buffer float none)) +(define-extern draw-bones-hud (function draw-control dma-buffer none)) \ No newline at end of file diff --git a/goal_src/engine/anim/joint-h.gc b/goal_src/engine/anim/joint-h.gc index 5acbddf1d0..b65ffea0ae 100644 --- a/goal_src/engine/anim/joint-h.gc +++ b/goal_src/engine/anim/joint-h.gc @@ -11,6 +11,7 @@ (define-extern cspace<-parented-transformq-joint! (function cspace transformq none)) (define-extern cspace<-transformq! (function cspace transformq matrix)) (define-extern vector<-cspace! (function vector cspace vector)) +(define-extern create-interpolated-joint-animation-frame (function (inline-array vector) int process-drawable int)) ;; DECOMP BEGINS @@ -43,9 +44,9 @@ (root-channel (inline-array joint-control-channel) :offset 16) (blend-index int32 :offset-assert 20) (active-channels int32 :offset-assert 24) - (generate-frame-function (function pointer int process-drawable none) :offset-assert 28) + (generate-frame-function (function (inline-array vector) int process-drawable int) :offset-assert 28) (prebind-function (function pointer int process-drawable none) :offset-assert 32) - (postbind-function (function pointer int process-drawable none) :offset-assert 36) + (postbind-function (function process-drawable none) :offset-assert 36) (effect effect-control :offset-assert 40) (channel joint-control-channel 3 :inline :offset-assert 48) ;; actually dynamic? (frame-group0 art-joint-anim :offset 60) @@ -107,14 +108,10 @@ (jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328) (fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392) (frame-data joint-anim-compressed-frame 2 :inline :offset-assert 9600) + (flatten-array float 576 :offset 2400) ;; no clue! + (flattened vector 24 :inline :offset 2400) ;; no clue! ) :method-count-assert 9 :size-assert #x3640 :flag-assert #x900003640 ) - -(define-extern cspace<-parented-transformq-joint! (function cspace transformq none)) -(define-extern cspace<-transformq! (function cspace transformq matrix)) -(define-extern vector<-cspace! (function vector cspace vector)) -(define-extern cspace<-transformq+world-trans! (function cspace transformq vector matrix)) -(define-extern create-interpolated-joint-animation-frame (function joint-control int process-drawable int)) diff --git a/goal_src/engine/anim/joint.gc b/goal_src/engine/anim/joint.gc index 1da69f19f8..3e17aefdd7 100644 --- a/goal_src/engine/anim/joint.gc +++ b/goal_src/engine/anim/joint.gc @@ -5,66 +5,38 @@ ;; name in dgo: joint ;; dgos: GAME, ENGINE -;; definition for method 2 of type joint +;; DECOMP BEGINS + (defmethod print joint ((obj joint)) - (format - #t - "#<~A ~S ~D @ #x~X>" - (-> obj type) - (-> obj name) - (-> obj number) - obj - ) + (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))) - ) + (+! (-> 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 - ) + (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)) @@ -76,348 +48,263 @@ 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)) + (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) + (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) - ) + (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)) + ((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)) +(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))) - ) + (+! (-> 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) - ) + (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)) +(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))) - ) + (+! (-> 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))) + (+! (-> 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 - ) + #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))) + (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) 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 ) - (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) + (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 - ) + (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) + ) ) - ) - (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 - ) + (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)) 28)) - ) + (set! (-> obj extra tag) (&+ (the-as (pointer res-tag) (-> obj extra)) 28)) + ) 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)) +(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))) - ) + (+! (-> 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)) - ) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) (dotimes (s3-0 (-> obj length)) - (mem-usage (-> obj data s3-0) arg0 arg1) - ) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) obj ) -;; 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 +(defmethod asize-of art-joint-anim ((obj art-joint-anim)) + (the-as int (+ (-> art size) (* (-> obj length) 4))) ) -;; 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)) + +(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))) - ) + (+! (-> 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)) - ) + (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))) + (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))) + (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)) @@ -441,654 +328,665 @@ 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) - ) - ) - ) + (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 + 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))) ) - ) - (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) - ) - ) - ) + (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)) - ) + (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) + ) + ) ) - (return s2-0) - ) + (the-as int #f) ) - ) - (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) + (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) ) - ) - (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))) + (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)) +(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) + (+! (-> 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))) +(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 + (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 + ) ) - (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)) +(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))) - ) + (+! (-> 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)) - ) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) (dotimes (s3-0 (-> obj length)) - (mem-usage (-> obj data s3-0) arg0 arg1) - ) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) obj ) -;; 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)) 28)) - ) + (set! (-> obj extra tag) (&+ (the-as (pointer res-tag) (-> obj extra)) 28)) + ) 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)) + (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) ) - ) - (the-as joint #f) - ) - (else - (dotimes (s4-1 (-> obj length)) - (if (name= arg0 (-> obj data s4-1 name)) - (return (-> obj data s4-1)) + (else + (dotimes (s4-1 (-> obj length)) + (if (name= arg0 (-> obj data s4-1 name)) + (return (-> obj data s4-1)) + ) + ) + (the-as joint #f) ) - ) - (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) + (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) ) - ) - (the-as int #f) - ) - (else - (dotimes (s4-1 (-> obj length)) - (if (name= arg0 (-> obj data s4-1 name)) - (return s4-1) + (else + (dotimes (s4-1 (-> obj length)) + (if (name= arg0 (-> obj data s4-1 name)) + (return s4-1) + ) + ) + (the-as int #f) ) - ) - (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)) +(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))) - ) + (+! (-> 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)) - ) + (mem-usage (-> obj extra) arg0 (logior arg1 512)) + ) (dotimes (s3-0 (-> obj length)) - (mem-usage (-> obj data s3-0) arg0 arg1) - ) + (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 - ) + (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)) - ) +(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))) + f0-2 ) - ) - 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)) - ) +(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) + ((= (-> 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 + ) + +(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) + ) ) - (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 - ) - ) - ) - ) + (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)) - ) + (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) - ) + (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) - ) +(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) - ) + (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) + (while (and (< sv-40 (-> arg1 length)) (!= (-> arg1 data sv-40 type) art-joint-anim)) + (set! sv-40 (+ sv-40 1)) ) - (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-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))) ) - (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*)) + (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-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)) + ) ) - ) ) - ) - (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) ) -(defun - matrix-from-joint-anim-frame - ((arg0 joint-anim-compressed-control) (arg1 int) (arg2 int)) +(defun flatten-joint-control-to-spr ((arg0 joint-control)) + (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) + ) + (let ((nb-channels (-> arg0 active-channels))) + (let ((f0-0 1.0) + (v1-0 0) + (a1-0 (-> (scratchpad-object terrain-context) work foreground joint-work flattened)) + ) + (dotimes (a0-1 nb-channels) + (let ((a2-3 (-> arg0 channel a0-1))) + (case (-> a2-3 command) + (('push) + (let ((a2-4 (&+ (the-as pointer a1-0) v1-0))) + (set! (-> a1-0 0 quad) (the-as uint128 0)) + (set! (-> a1-0 1 quad) (the-as uint128 0)) + (set! (-> a1-0 2 quad) (the-as uint128 0)) + (set! (-> a1-0 3 quad) (the-as uint128 0)) + (set! (-> a1-0 4 quad) (the-as uint128 0)) + (set! (-> a1-0 5 quad) (the-as uint128 0)) + (set! (-> (the-as (pointer float) a2-4)) f0-0) + ) + (set! a1-0 (the-as (inline-array vector) (-> a1-0 6))) + ) + (('blend 'push1) + (let ((f1-0 (-> a2-3 frame-interp))) + (let ((a2-5 (- f0-0 f1-0))) + (.mov vf1 a2-5) + ) + (let ((a1-1 (the-as (inline-array vector) (-> a1-0 -6)))) + (.lvf vf2 (&-> a1-1 0 quad)) + (let ((a2-6 (&+ (the-as pointer a1-1) v1-0))) + (.lvf vf3 (&-> a1-1 1 quad)) + (.lvf vf4 (&-> a1-1 2 quad)) + (.lvf vf5 (&-> a1-1 3 quad)) + (.lvf vf6 (&-> a1-1 4 quad)) + (.lvf vf7 (&-> a1-1 5 quad)) + (.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) + (.svf (&-> a1-1 0 quad) vf2) + (.svf (&-> a1-1 1 quad) vf3) + (.svf (&-> a1-1 2 quad) vf4) + (.svf (&-> a1-1 3 quad) vf5) + (.svf (&-> a1-1 4 quad) vf6) + (.svf (&-> a1-1 5 quad) vf7) + (set! (-> (the-as (pointer float) a2-6)) (+ (-> (the-as (pointer float) a2-6) 0) f1-0)) + ) + (set! a1-0 (the-as (inline-array vector) (-> a1-1 6))) + ) + ) + ) + (('stack) + (let* ((f2-2 (-> a2-3 frame-interp)) + (f1-2 (- f0-0 f2-2)) + (a1-2 (the-as (inline-array vector) (-> a1-0 -12))) + ) + (let ((a2-7 f2-2)) + (.mov vf1 a2-7) + ) + (let ((a2-8 f1-2)) + (.mov vf2 a2-8) + ) + (.lvf vf3 (&-> a1-2 0 quad)) + (.lvf vf4 (&-> a1-2 1 quad)) + (.lvf vf5 (&-> a1-2 2 quad)) + (.lvf vf6 (&-> a1-2 3 quad)) + (.lvf vf7 (&-> a1-2 4 quad)) + (.lvf vf8 (&-> a1-2 5 quad)) + (.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 6 quad)) + (.lvf vf10 (&-> a1-2 7 quad)) + (.lvf vf11 (&-> a1-2 8 quad)) + (.lvf vf12 (&-> a1-2 9 quad)) + (.lvf vf13 (&-> a1-2 10 quad)) + (.lvf vf14 (&-> a1-2 11 quad)) + (.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) + (.svf (&-> a1-2 0 quad) vf3) + (.svf (&-> a1-2 1 quad) vf4) + (.svf (&-> a1-2 2 quad) vf5) + (.svf (&-> a1-2 3 quad) vf6) + (.svf (&-> a1-2 4 quad) vf7) + (.svf (&-> a1-2 5 quad) vf8) + (set! a1-0 (the-as (inline-array vector) (-> a1-2 6))) + ) + ) + ) + ) + (+! v1-0 4) + ) + ) + (let ((upl-idx 0)) + (dotimes (ch nb-channels) + (when (< 0.001 (-> (scratchpad-object terrain-context) work foreground joint-work flatten-array ch)) + (let* ((v1-9 (-> arg0 channel ch)) + (s2-0 (-> v1-9 frame-group frames)) + (f0-2 (-> v1-9 frame-num)) + (s1-0 (the int f0-2)) + (f30-0 (- f0-2 (the float s1-0))) + ) + (let ((s0-0 (+ (-> s2-0 num-frames) -1))) + (if (not (-> v1-9 frame-group)) + (format 0 "Channel ~D skel ~A frame-group is #f!!!~%" ch arg0) + ) + (when (>= s1-0 (the-as int s0-0)) + (set! f30-0 0.0) + (set! s1-0 (the-as int s0-0)) + ) + ) + (let ((v1-18 (-> (scratchpad-object terrain-context) work foreground joint-work uploads upl-idx))) + (set! (-> v1-18 fixed) (-> s2-0 fixed)) + (set! (-> v1-18 fixed-qwc) (the-as int (-> s2-0 fixed-qwc))) + (set! (-> v1-18 frame) (-> s2-0 data s1-0)) + (set! (-> v1-18 frame-qwc) (the-as int (if (= f30-0 0.0) + (-> s2-0 frame-qwc) + (* (-> s2-0 frame-qwc) 2) + ) + ) + ) + (set! (-> v1-18 amount) (-> (scratchpad-object terrain-context) work foreground joint-work flatten-array ch)) + (set! (-> v1-18 interp) f30-0) + ) + ) + (+! upl-idx 1) + ) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work num-uploads) upl-idx) + ) + (dotimes (v1-24 nb-channels) + (set! (-> arg0 channel v1-24 inspector-amount) + (-> (scratchpad-object terrain-context) work foreground joint-work flatten-array v1-24) + ) + ) + ) + 0 + ) + ) + +(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) - ) - ) + (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)) + ) ) - ) - ((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) ) - (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)) +(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)) + (if (>= s5-0 2) + (format 0 "ERROR: Call to matrix-from-control-channel! on joint ~D~%" s5-0) ) - (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)) + (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 ) - (a2-7 - (matrix-from-joint-anim-frame - (-> s4-0 frames) - s5-0 - (+ (the int f30-0) 1) + (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) + ) ) - ) - (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) - ) - ) + (cond + ((>= 0.0 f30-0) + (empty) + arg0 ) - (matrix-lerp! arg0 arg0 a2-3 f30-0) + ((>= 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 (the-as int (scratchpad-object terrain-context)))) + 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)) +(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))) + (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) + ) ) - (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) @@ -1099,143 +997,424 @@ 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) - ) + (-> 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) + (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 ) - v0-0 - ) ) -;; definition for function cspace<-rot-yxy! -;; ERROR: function has no type analysis. Cannot decompile. +(defun cspace<-rot-yxy! ((arg0 cspace) (arg1 transform)) + (let ((s5-0 (-> arg0 bone transform))) + (matrix-rotate-yxy! s5-0 (-> arg1 rot)) + (scale-matrix! s5-0 (-> arg1 scale) s5-0) + ) + ) -;; definition for function cspace<-transform-yxy! -;; ERROR: function has no type analysis. Cannot decompile. +(defun cspace<-transform-yxy! ((arg0 cspace) (arg1 transform)) + (let ((s4-0 (-> arg0 bone transform)) + (s5-0 (new 'stack-no-clear 'matrix)) + (s3-0 (new 'stack-no-clear 'matrix)) + ) + (matrix-identity! s4-0) + (matrix-translate! s4-0 (-> arg1 trans)) + (matrix-rotate-yxy! s5-0 (-> arg1 rot)) + (matrix*! s3-0 s5-0 s4-0) + (scale-matrix! s4-0 (-> arg1 scale) s3-0) + ) + ) -;; 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)) +(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 + (let ((v1-2 (matrix-from-control! + (the-as matrix-stack (+ 80 (the-as int (scratchpad-object terrain-context)))) + (-> 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 (-> arg0 bone transform)) + v0-1 ) - (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) + (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 ) - 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! +(defun cspace<-parented-transformq-joint! ((arg0 cspace) (arg1 transformq)) + (nop!) + ;; the ops in these funcs were scrambled for pipeline optimization. screw that. + ;; f0 = 1.0 + ;; a3 = -> arg0 parent (used once) + (rlet ((acc :class vf) + (vf0 :class vf) ;; unit + (vf5 :class vf) ;; quat + (vf15 :class vf) ;; trans + (vf6 :class vf) ;; temp + (vf2 :class vf) ;; temp + (vf3 :class vf) ;; temp + (vf4 :class vf) ;; temp + + (vf1 :class vf) ;; temp + (vf7 :class vf) ;; temp + (vf8 :class vf) ;; temp + (vf9 :class vf) ;; temp + (vf10 :class vf) ;; temp + + (vf11 :class vf) ;; temp + (vf12 :class vf) ;; temp + (vf13 :class vf) ;; temp + (vf14 :class vf) ;; temp + + (vf16 :class vf) ;; temp + (t1 :class vf) + (t2 :class vf) + (t3 :class vf) + ) + (init-vf0-vector) + (.lvf vf5 (-> arg1 quat)) + (.lvf vf15 (-> arg1 trans)) + (let ((t0 (-> arg0 parent bone)) + (a2 (-> arg0 bone)) + ) + (.add.vf vf6 vf5 vf5) + ;; set vf2 + (.add.w.vf vf2 vf0 vf5 :mask #b0001) + (.add.z.vf vf2 vf0 vf5 :mask #b0010) + (.sub.y.vf vf2 vf0 vf5 :mask #b0100) + (.sub.w.vf vf2 vf0 vf0 :mask #b1000) + ;; set vf3 + (.sub.z.vf vf3 vf0 vf5 :mask #b0001) + (.add.w.vf vf3 vf0 vf5 :mask #b0010) + (.add.x.vf vf3 vf0 vf5 :mask #b0100) + (.sub.w.vf vf3 vf0 vf0 :mask #b1000) + ;; set vf4 + (.add.y.vf vf4 vf0 vf5 :mask #b0001) + (.sub.x.vf vf4 vf0 vf5 :mask #b0010) + (.add.w.vf vf4 vf0 vf5 :mask #b0100) + (.sub.w.vf vf4 vf0 vf0 :mask #b1000) + ;; outer prods + (.outer.product.vf vf2 vf6 vf2) + (.outer.product.vf vf3 vf6 vf3) + (.outer.product.vf vf4 vf6 vf4) + ;; add ones + (.add.w.vf vf2 vf2 vf0 :mask #b0001) + (.add.w.vf vf3 vf3 vf0 :mask #b0010) + (.add.w.vf vf4 vf4 vf0 :mask #b0100) + + ;; things for cond blocks + (.lvf vf7 (-> t0 transform vector 0)) + (.lvf vf8 (-> t0 transform vector 1)) + (.lvf vf9 (-> t0 transform vector 2)) + (.lvf vf10 (-> t0 transform vector 3)) + (.lvf vf1 (-> a2 scale)) + + (cond + ((zero? (-> t0 scale w)) + (.mul.x.vf vf2 vf2 vf1) + (.mul.y.vf vf3 vf3 vf1) + (.mul.z.vf vf4 vf4 vf1) + + ;; the same + (.matrix*! acc (vf11 vf12 vf13 vf14) (vf2 vf3 vf4 (vf15 vf15 vf15 vf0)) (vf7 vf8 vf9 vf10)) + (.svf (-> a2 transform vector 0) vf11) + (.svf (-> a2 transform vector 1) vf12) + (.svf (-> a2 transform vector 2) vf13) + (.svf (-> a2 transform vector 3) vf14) + ) + (else + (.mul.x.vf vf2 vf2 vf1) + (.mul.y.vf vf3 vf3 vf1) + (.mul.z.vf vf4 vf4 vf1) + + (.mov t1 (/ 1.0 (-> t0 scale x))) + (.mov t2 (/ 1.0 (-> t0 scale y))) + (.mov t3 (/ 1.0 (-> t0 scale z))) + (.pextlw t1 t1 t2) + (.pcpyld t1 t1 t3) + (.mov vf16 t1) + (.mul.vf vf2 vf2 vf16) + (.mul.vf vf3 vf3 vf16) + (.mul.vf vf4 vf4 vf16) + + ;; the same + (.matrix*! acc (vf11 vf12 vf13 vf14) (vf2 vf3 vf4 (vf15 vf15 vf15 vf0)) (vf7 vf8 vf9 vf10)) + (.svf (-> a2 transform vector 0) vf11) + (.svf (-> a2 transform vector 1) vf12) + (.svf (-> a2 transform vector 2) vf13) + (.svf (-> a2 transform vector 3) vf14) + ) + ) + ) + ) + ) + +(defun clear-frame-accumulator ((arg0 (inline-array vector))) +;; TODO + (with-sp + (.sub sp 16) + (nop!) + (nop!) + (nop!) + (nop!) + (nop!) + (nop!) + (nop!) + (nop!) + (.add sp 16) + ) + ) + +(define-extern decompress-fixed-data-to-accumulator (function none)) +(define-extern decompress-frame-data-to-accumulator (function none)) +(define-extern decompress-frame-data-pair-to-accumulator (function none)) ;; 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. +(defun make-joint-jump-tables () + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 0) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 108 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 1) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 2) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 233 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 3) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 4) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 301 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 5) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 6) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 387 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 7) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 8) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 155 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 9) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 10) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 261 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 11) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 12) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 335 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 13) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 14) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 402 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 15) + (the-as (function none) (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 0) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 1) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 92 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 2) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 3) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 140 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 4) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 5) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 220 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 6) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 7) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 307 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 8) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 9) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 107 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 10) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 11) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 174 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 12) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 13) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 248 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 14) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table 15) + (the-as (function none) (+ (the-as uint decompress-frame-data-to-accumulator) (* 354 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 0) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 1) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 125 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 2) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 3) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 197 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 4) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 5) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 318 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 6) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 7) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 459 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 8) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 9) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 150 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 10) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 11) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 248 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 12) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 13) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 366 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 14) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) + ) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table 15) + (the-as (function none) (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 533 4))) + ) + 0 + ) -;; definition for function decompress-frame-data-to-accumulator -;; ERROR: function was not converted to expressions. Cannot decompile. +(defun calc-animation-from-spr ((arg0 (inline-array vector)) (arg1 int)) + (declare (asm-func object) + (allow-saved-regs) ;; very dangerous! + ) + (with-sp + ;; useless possibly leftover reg move here + (rlet ( + (s0 :reg rbx) + (s1 :reg rbp) + (s2 :reg r10) + (s3 :reg r11) + (s4 :reg r12) + (s6 :reg r13) + ) + ;(.sub sp -16) + + (let ((joint-num arg1)) + + ) + + ;(.add sp 16) + ) + ) + (.ret) + ) -;; definition for function decompress-frame-data-pair-to-accumulator -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; 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) +(defun create-interpolated-joint-animation-frame ((arg0 (inline-array vector)) (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/goal_src/engine/collide/collide-frag.gc b/goal_src/engine/collide/collide-frag.gc index 2bb95139cd..015ada1d7d 100644 --- a/goal_src/engine/collide/collide-frag.gc +++ b/goal_src/engine/collide/collide-frag.gc @@ -11,7 +11,7 @@ ) ;; definition for method 10 of type drawable-tree-collide-fragment -(defmethod draw drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 drawable-tree-collide-fragment) (arg1 display-frame)) (when *display-render-collision* (dotimes (s4-0 (-> obj length)) (draw (-> obj data s4-0) (-> obj data s4-0) arg1) @@ -107,12 +107,12 @@ ) ;; definition for method 10 of type collide-fragment -(defmethod draw collide-fragment ((obj collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw collide-fragment ((obj collide-fragment) (arg0 collide-fragment) (arg1 display-frame)) (none) ) ;; definition for method 10 of type drawable-inline-array-collide-fragment -(defmethod draw drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 drawable-inline-array-collide-fragment) (arg1 display-frame)) (dotimes (s4-0 (-> obj length)) (let ((s3-0 (-> obj data s4-0))) (if (sphere-cull (-> s3-0 bsphere)) diff --git a/goal_src/engine/data/art-h.gc b/goal_src/engine/data/art-h.gc index bdc48208a5..16b513f213 100644 --- a/goal_src/engine/data/art-h.gc +++ b/goal_src/engine/data/art-h.gc @@ -241,14 +241,39 @@ ) ) +(defenum draw-status + :type uint8 + :bitfield #t + (drwf00 0) + (drwf01 1) + (drwf02 2) + (drwf03 3) + (drwf04 4) + (drwf05 5) + (drwf06 6) + (drwf07 7) + ) + +(defenum draw-effect + :type uint8 + (drweff0 0) + (drweff1 1) + (drweff2 2) + (title 3) + (drweff4 4) + (drweff5 5) + (drweff6 6) + (drweff7 7) + ) + (declare-type ripple-control basic) (declare-type shadow-geo basic) (declare-type shadow-control basic) (deftype draw-control (basic) - ((status uint8 :offset-assert 4) + ((status draw-status :offset-assert 4) (matrix-type uint8 :offset-assert 5) (data-format uint8 :offset-assert 6) - (global-effect uint8 :offset-assert 7) + (global-effect draw-effect :offset-assert 7) (art-group art-group :offset-assert 8) (jgeo art-joint-geo :offset-assert 12) (mgeo merc-ctrl :offset-assert 16) diff --git a/goal_src/engine/debug/default-menu.gc b/goal_src/engine/debug/default-menu.gc index 640c9f12f4..0b42128aa6 100644 --- a/goal_src/engine/debug/default-menu.gc +++ b/goal_src/engine/debug/default-menu.gc @@ -3980,7 +3980,7 @@ (defmacro new-dm-flag (text var func) `(new 'debug 'debug-menu-item-flag ,text ,var (the-as (function int debug-menu-msg object) ,func)) ) -(defmacro new-dm-sym-flag (text sym func) +(defmacro new-dm-bool (text sym func) `(new-dm-flag ,text (quote ,sym) ,func) ) (defmacro new-dm-submenu (text menu) @@ -4085,12 +4085,12 @@ (defun-debug debug-menu-make-load-menu ((ctx debug-menu-context)) (let ((load-menu (new 'debug 'debug-menu ctx "Load menu"))) - (debug-menu-append-item load-menu (new-dm-sym-flag "Level Border" *display-level-border* dm-boolean-toggle-pick-func)) + (debug-menu-append-item load-menu (new-dm-bool "Level Border" *display-level-border* dm-boolean-toggle-pick-func)) - (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 0)) - (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 1)) - (debug-menu-append-item load-menu (debug-menu-make-load-display-menu ctx)) - (debug-menu-append-item load-menu (debug-menu-make-load-teleport-menu ctx)) + (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 0)) ;; Want 0 + (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 1)) ;; Want 1 + (debug-menu-append-item load-menu (debug-menu-make-load-display-menu ctx)) ;; Display + (debug-menu-append-item load-menu (debug-menu-make-load-teleport-menu ctx)) ;; Camera teleport (new-dm-submenu "Load" load-menu) ) @@ -4099,6 +4099,11 @@ (when (-> *debug-menu-context* root-menu) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*)) ;; Entity menu TODO + ;; Music menu TODO + ;; Secrets menu TODO + ;; Scene menu TODO + ;; PC Settings menu TODO + ;; Other menu TODO ) ) diff --git a/goal_src/engine/draw/drawable-actor-h.gc b/goal_src/engine/draw/drawable-actor-h.gc index baa768a334..e8bd703a8d 100644 --- a/goal_src/engine/draw/drawable-actor-h.gc +++ b/goal_src/engine/draw/drawable-actor-h.gc @@ -27,7 +27,6 @@ ) -(defmethod draw drawable-tree-actor ((obj _type_) (arg0 drawable) (arg1 display-frame)) - 0 +(defmethod draw drawable-tree-actor ((obj drawable-tree-actor) (arg0 drawable-tree-actor) (arg1 display-frame)) (none) ) diff --git a/goal_src/engine/draw/drawable-ambient-h.gc b/goal_src/engine/draw/drawable-ambient-h.gc index 5cf2abf488..e808a3e418 100644 --- a/goal_src/engine/draw/drawable-ambient-h.gc +++ b/goal_src/engine/draw/drawable-ambient-h.gc @@ -34,8 +34,7 @@ :flag-assert #x1200000044 ) -(defmethod draw drawable-tree-ambient ((obj _type_) (arg0 drawable) (arg1 display-frame)) - 0 +(defmethod draw drawable-tree-ambient ((obj drawable-tree-ambient) (arg0 drawable-tree-ambient) (arg1 display-frame)) (none) ) diff --git a/goal_src/engine/draw/drawable-group.gc b/goal_src/engine/draw/drawable-group.gc index 1167712c55..63d2a0300d 100644 --- a/goal_src/engine/draw/drawable-group.gc +++ b/goal_src/engine/draw/drawable-group.gc @@ -66,7 +66,7 @@ obj ) -(defmethod draw drawable-group ((obj drawable-group) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-group ((obj drawable-group) (arg0 drawable-group) (arg1 display-frame)) (when (vis-cull (-> obj id)) (when (sphere-cull (-> obj bsphere)) (dotimes (s3-0 (-> obj length)) diff --git a/goal_src/engine/draw/drawable-h.gc b/goal_src/engine/draw/drawable-h.gc index 99f0fae1a9..5ecb488619 100644 --- a/goal_src/engine/draw/drawable-h.gc +++ b/goal_src/engine/draw/drawable-h.gc @@ -25,7 +25,7 @@ :flag-assert #x1200000020 (:methods (login (_type_) _type_ 9) - (draw (_type_ drawable display-frame) none 10) ;; display-frame is from the method inspect tool + (draw (_type_ _type_ display-frame) none 10) (collide-with-box (_type_ int collide-list) none 11) (collide-y-probe (_type_ int collide-list) none 12) (collide-ray (_type_ int collide-list) none 13) diff --git a/goal_src/engine/draw/drawable-inline-array.gc b/goal_src/engine/draw/drawable-inline-array.gc index 9c7870f1b1..2431bf6ded 100644 --- a/goal_src/engine/draw/drawable-inline-array.gc +++ b/goal_src/engine/draw/drawable-inline-array.gc @@ -15,7 +15,7 @@ obj ) -(defmethod draw drawable-inline-array ((obj drawable-inline-array) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-inline-array ((obj drawable-inline-array) (arg0 drawable-inline-array) (arg1 display-frame)) (none) ) diff --git a/goal_src/engine/draw/drawable.gc b/goal_src/engine/draw/drawable.gc index 404e5c2f30..8f37a497a8 100644 --- a/goal_src/engine/draw/drawable.gc +++ b/goal_src/engine/draw/drawable.gc @@ -37,22 +37,6 @@ ) ) -(defun vis-cull ((id int)) - "Is this thing visible? By draw-node id." - ;; todo - #t - - #| - (let* ((addr (scratchpad-ptr int8 :offset (+ #x3b80 (/ id 8)))) ;; address of the vis data - (vis-byte (-> addr 0)) ;; vis byte - (shift-amount (+ 56 (logand id 7))) - (shifted (shl vis-byte shift-amount)) - ) - (< shifted 0) - ) - |# - ) - (defun-debug find-instance-by-name ((arg0 string)) (dotimes (s5-0 (-> *level* length)) (let ((v1-3 (-> *level* level s5-0))) @@ -112,9 +96,30 @@ ;; todo ) +(defun guard-band-cull ((arg0 vector)) + #t + ;; todo + ) + +(defun vis-cull ((id int)) + "Is this thing visible? By draw-node id." + ;; todo + #t + + #| + (let* ((addr (scratchpad-ptr int8 :offset (+ #x3b80 (/ id 8)))) ;; address of the vis data + (vis-byte (-> addr 0)) ;; vis byte + (shift-amount (+ 56 (logand id 7))) + (shifted (shl vis-byte shift-amount)) + ) + (< shifted 0) + ) + |# + ) + (defun real-main-draw-hook () (when *slow-frame-rate* - (dotimes (v1-2 #xc3500) + (dotimes (v1-2 #xc35000) ;; changed from ps2 for... obvious reasons. (nop!) (nop!) (nop!) @@ -814,28 +819,12 @@ (display-sync disp) ;; also starts next ) -(defun dma-add-process-drawable-hud ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) - (set! (-> arg1 status) (logand -9 (-> arg1 status))) - (when (zero? (logand (-> arg1 status) 22)) - ;; snip - (lod-set! arg1 0) - (logior! (-> arg1 status) 8) - ;;(draw-bones-hud arg1 arg3) - ) - 0 - (none) - ) - (defun add-process-drawable ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) ((-> arg1 dma-add-func) arg0 arg1 arg2 arg3) (none) ) -(define-extern guard-band-cull (function vector symbol)) - -(defun - dma-add-process-drawable - ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) +(defun dma-add-process-drawable ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) (local-vars (v1-37 float) (sv-16 process-drawable)) (rlet ((acc :class vf) (Q :class vf) @@ -860,288 +849,285 @@ (vf4 :class vf) (vf5 :class vf) ) - (init-vf0-vector) - (set! sv-16 arg0) - (set! (-> arg1 status) (logand -9 (-> arg1 status))) - (when (zero? (logand (-> arg1 status) 22)) - (let ((s4-0 (the-as vector (+ 48 #x70000000))) - (s2-0 (the-as vu-lights (+ 64 #x70000000))) - (s3-0 *time-of-day-context*) - ) - (.lvf vf16 (&-> arg1 origin quad)) - (.lvf vf17 (&-> arg1 bounds quad)) - (.mul.x.vf vf16 vf16 vf0 :mask #b1000) - (.add.vf vf16 vf16 vf17) - (.svf (&-> s4-0 quad) vf16) - (.lvf vf28 (&-> arg1 color-mult quad)) - (.lvf vf29 (&-> arg1 color-emissive quad)) - (when (sphere-in-view-frustum? (the-as sphere s4-0)) - (case (-> arg1 global-effect) - ((3) - (when (not (-> s3-0 title-updated)) - (set! (-> s3-0 title-updated) #t) - (let ((s0-0 (-> *math-camera* inv-camera-rot)) - (a1-1 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) - (set-vector! a1-1 0.612 0.5 -0.612 0.0) - (set-vector! s1-0 -0.696 0.174 0.696 0.0) - (vector-matrix*! - (the-as vector (-> s3-0 title-light-group)) - a1-1 - s0-0 + (init-vf0-vector) + (set! sv-16 arg0) + (logclear! (-> arg1 status) (draw-status drwf03)) + (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (let ((s4-0 (the-as vector (+ 48 (the-as int (the-as terrain-context #x70000000))))) + (s2-0 (the-as vu-lights (+ 64 (the-as int (the-as terrain-context #x70000000))))) + (s3-0 *time-of-day-context*) ) - (vector-matrix*! - (the-as vector (-> s3-0 title-light-group dir1)) - s1-0 - s0-0 - ) - ) - (set-vector! - (-> *time-of-day-context* current-shadow) - 0.612 - -0.5 - -0.612 - 1.0 - ) - ) - (vu-lights<-light-group! s2-0 (-> s3-0 title-light-group)) - ) - (else - (let ((f28-0 (-> arg1 secondary-interp)) - (f30-0 (-> arg1 current-secondary-interp)) - (v1-17 (-> arg1 shadow-mask)) - (a0-10 (-> arg1 level-index)) - (s0-1 (-> s3-0 light-group (-> *target* draw light-index))) - (s1-1 (new 'stack-no-clear 'light-group)) - ) - (cond - ((= (-> arg1 light-index) 255) - ) - ((= a0-10 2) - (set! s0-1 (-> s3-0 light-group (-> arg1 light-index))) - ) - (else - (set! s0-1 (-> s3-0 moods a0-10 light-group (-> arg1 light-index))) - ) - ) - (when (not (or (= a0-10 2) (zero? v1-17))) - (let* ((a1-22 (-> s3-0 light-masks-0 a0-10)) - (a2-14 (-> s3-0 light-masks-1 a0-10)) - (f26-0 (-> s3-0 light-interp a0-10)) - (a0-13 (logand a1-22 v1-17)) - (v1-18 (logand a2-14 v1-17)) + (.lvf vf16 (&-> arg1 origin quad)) + (.lvf vf17 (&-> arg1 bounds quad)) + (.mul.x.vf vf16 vf16 vf0 :mask #b1000) + (.add.vf vf16 vf16 vf17) + (.svf (&-> s4-0 quad) vf16) + (.lvf vf28 (&-> arg1 color-mult quad)) + (.lvf vf29 (&-> arg1 color-emissive quad)) + (when (sphere-in-view-frustum? (the-as sphere s4-0)) + (case (-> arg1 global-effect) + (((draw-effect title)) + (when (not (-> s3-0 title-updated)) + (set! (-> s3-0 title-updated) #t) + (let ((s0-0 (-> *math-camera* inv-camera-rot)) + (a1-1 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector)) + ) + (set-vector! a1-1 0.612 0.5 -0.612 0.0) + (set-vector! s1-0 -0.696 0.174 0.696 0.0) + (vector-matrix*! (the-as vector (-> s3-0 title-light-group)) a1-1 s0-0) + (vector-matrix*! (the-as vector (-> s3-0 title-light-group dir1)) s1-0 s0-0) ) - (cond - ((and (zero? a0-13) (zero? v1-18)) - ) - (else - (set! f28-0 (cond - ((and (nonzero? a0-13) (nonzero? v1-18)) - 1.0 - ) - ((zero? a0-13) - (quad-copy! - (the-as pointer s1-1) - (the-as pointer s0-1) - 12 - ) - (set! s0-1 s1-1) - (set! (-> s0-1 dir1 levels x) 0.0) - f26-0 - ) - (else - (quad-copy! - (the-as pointer s1-1) - (the-as pointer s0-1) - 12 - ) - (set! s0-1 s1-1) - (set! (-> s0-1 dir0 levels x) 0.0) - (- 1.0 f26-0) - ) - ) - ) - ) - ) - ) - ) - (if *teleport* - (set! f30-0 f28-0) - ) - (when (not (or (paused?) (= f28-0 f30-0))) - (let ((f0-15 (- f30-0 f28-0))) - (set! f30-0 (cond - ((< (fabs f0-15) 0.2) - f28-0 - ) - ((< f0-15 0.0) - (+ 0.2 f30-0) - ) - (else - (+ -0.2 f30-0) - ) - ) - ) - ) - (set! (-> arg1 current-secondary-interp) f30-0) - ) - (cond - ((= f30-0 0.0) - (vu-lights<-light-group! s2-0 s0-1) - ) - (else - (if (!= s0-1 s1-1) - (quad-copy! (the-as pointer s1-1) (the-as pointer s0-1) 12) - ) - (let ((f0-20 (- 1.0 f30-0))) - (set! (-> s1-1 dir0 levels x) (* (-> s1-1 dir0 levels x) f0-20)) - (set! (-> s1-1 dir0 levels y) (* (-> s1-1 dir0 levels y) f0-20)) - (set! (-> s1-1 dir1 levels x) (* (-> s1-1 dir1 levels x) f0-20)) - (set! (-> s1-1 dir1 levels y) (* (-> s1-1 dir1 levels y) f0-20)) - (set! (-> s1-1 dir2 levels x) (* (-> s1-1 dir2 levels x) f0-20)) - (set! (-> s1-1 dir2 levels y) (* (-> s1-1 dir2 levels y) f0-20)) - ) - (vu-lights<-light-group! s2-0 s1-1) - ) - ) - ) - (.lvf vf2 (&-> s2-0 color 0 quad)) - (.lvf vf3 (&-> s2-0 color 1 quad)) - (.lvf vf4 (&-> s2-0 color 2 quad)) - (.lvf vf5 (&-> s2-0 ambient quad)) - (.mul.vf vf5 vf5 vf28) - (.mul.vf vf2 vf2 vf28) - (.mul.vf vf3 vf3 vf28) - (.mul.vf vf4 vf4 vf28) - (.add.vf vf5 vf5 vf29) - (.svf (&-> s2-0 color 0 quad) vf2) - (.svf (&-> s2-0 color 1 quad) vf3) - (.svf (&-> s2-0 color 2 quad) vf4) - (.svf (&-> s2-0 ambient quad) vf5) - (.mov v1-37 vf5) - ) - ) - (if *display-lights* - (add-debug-lights - #t - (bucket-id debug-draw0) - (the-as (inline-array light) (-> s3-0 light-group)) - (-> arg1 origin) - ) - ) - (let ((at-0 *math-camera*)) - (.lvf vf16 (&-> at-0 plane 0 quad)) - (.lvf vf17 (&-> at-0 plane 1 quad)) - (.lvf vf18 (&-> at-0 plane 2 quad)) - (.lvf vf19 (&-> at-0 plane 3 quad)) - (.lvf vf20 (&-> at-0 guard-plane 0 quad)) - (.lvf vf21 (&-> at-0 guard-plane 1 quad)) - (.lvf vf22 (&-> at-0 guard-plane 2 quad)) - (.lvf vf23 (&-> at-0 guard-plane 3 quad)) - (.lvf vf24 (&-> at-0 camera-rot vector 0 quad)) - (.lvf vf25 (&-> at-0 camera-rot vector 1 quad)) - (.lvf vf26 (&-> at-0 camera-rot vector 2 quad)) - (.lvf vf27 (&-> at-0 camera-rot vector 3 quad)) - ) - (let ((v1-42 (the-as object (+ 176 #x70000000)))) - (.lvf vf15 (&-> s4-0 quad)) - (.mul.w.vf acc vf27 vf0) - (.add.mul.x.vf acc vf24 vf15 acc) - (.add.mul.y.vf acc vf25 vf15 acc) - (.add.mul.z.vf vf15 vf26 vf15 acc :mask #b111) - (.mul.vf vf28 vf15 vf15) - (.max.w.vf vf29 vf0 vf0) - (.add.y.vf acc vf28 vf28) - (.add.mul.z.vf vf28 vf29 vf28 acc :mask #b1) - (.sqrt.vf Q vf28 :ftf #b0) - (.sub.w.vf vf28 vf0 vf15 :mask #b1000) - (.wait.vf) - (.add.vf vf15 vf28 Q :mask #b1000) - (.svf (&-> (the-as vector v1-42) quad) vf15) - (when (< 0.0 (+ (-> (the-as vector v1-42) z) (-> arg1 bounds w))) - (let ((s3-1 0)) - (let ((f30-1 (-> (the-as vector v1-42) w))) - (when (nonzero? (-> arg1 lod-set max-lod)) - (cond - ((>= (-> arg1 force-lod) 0) - (set! s3-1 (-> arg1 force-lod)) - (if (< (-> arg1 lod-set lod (-> arg1 lod-set max-lod) dist) f30-1) - (return #f) - ) - ) - (else - (while - (and - (< s3-1 (-> arg1 lod-set max-lod)) - (< (-> arg1 lod-set lod s3-1 dist) f30-1) + (set-vector! (-> *time-of-day-context* current-shadow) 0.612 -0.5 -0.612 1.0) ) - (+! s3-1 1) - ) + (vu-lights<-light-group! s2-0 (-> s3-0 title-light-group)) ) - ) - ) - (if - (and - (< (-> arg1 lod-set lod s3-1 dist) f30-1) - (< (-> arg1 force-lod) 0) - ) - (return #f) - ) - (let ((v1-64 (-> arg1 sink-group level)) - (a0-26 - (+ (-> arg1 sink-group merc-sink foreground-texture-page) 6) - ) - ) - (when (zero? (logand (-> arg1 status) 64)) - (if (< f30-1 (-> v1-64 closest-object a0-26)) - (set! (-> v1-64 closest-object a0-26) f30-1) - ) - (when (and (!= a0-26 6) (!= (-> arg1 level-index) 2)) - (let ((a1-45 (cond - ((< 102400.0 f30-1) - (-> arg1 mgeo header masks 0) - ) - ((< 81920.0 f30-1) - (-> arg1 mgeo header masks 1) - ) - (else - (-> arg1 mgeo header masks 2) - ) - ) + (else + (let ((f28-0 (-> arg1 secondary-interp)) + (f30-0 (-> arg1 current-secondary-interp)) + (v1-17 (-> arg1 shadow-mask)) + (a0-10 (-> arg1 level-index)) + (s0-1 (-> s3-0 light-group (-> *target* draw light-index))) + (s1-1 (new 'stack-no-clear 'light-group)) ) + (cond + ((= (-> arg1 light-index) 255) ) - (logior! (-> v1-64 texture-mask a0-26) a1-45) + ((= a0-10 2) + (set! s0-1 (-> s3-0 light-group (-> arg1 light-index))) + ) + (else + (set! s0-1 (-> s3-0 moods a0-10 light-group (-> arg1 light-index))) + ) + ) + (when (not (or (= a0-10 2) (zero? v1-17))) + (let* ((a1-22 (-> s3-0 light-masks-0 a0-10)) + (a2-14 (-> s3-0 light-masks-1 a0-10)) + (f26-0 (-> s3-0 light-interp a0-10)) + (a0-13 (logand a1-22 v1-17)) + (v1-18 (logand a2-14 v1-17)) + ) + (cond + ((and (zero? a0-13) (zero? v1-18)) + ) + (else + (set! f28-0 (cond + ((and (nonzero? a0-13) (nonzero? v1-18)) + 1.0 + ) + ((zero? a0-13) + (quad-copy! (the-as pointer s1-1) (the-as pointer s0-1) 12) + (set! s0-1 s1-1) + (set! (-> s0-1 dir1 levels x) 0.0) + f26-0 + ) + (else + (quad-copy! (the-as pointer s1-1) (the-as pointer s0-1) 12) + (set! s0-1 s1-1) + (set! (-> s0-1 dir0 levels x) 0.0) + (- 1.0 f26-0) + ) + ) + ) + ) + ) + ) + ) + (if *teleport* + (set! f30-0 f28-0) + ) + (when (not (or (paused?) (= f28-0 f30-0))) + (let ((f0-15 (- f30-0 f28-0))) + (set! f30-0 (cond + ((< (fabs f0-15) 0.2) + f28-0 + ) + ((< f0-15 0.0) + (+ 0.2 f30-0) + ) + (else + (+ -0.2 f30-0) + ) + ) + ) + ) + (set! (-> arg1 current-secondary-interp) f30-0) + ) + (cond + ((= f30-0 0.0) + (vu-lights<-light-group! s2-0 s0-1) + ) + (else + (if (!= s0-1 s1-1) + (quad-copy! (the-as pointer s1-1) (the-as pointer s0-1) 12) + ) + (let ((f0-20 (- 1.0 f30-0))) + (set! (-> s1-1 dir0 levels x) (* (-> s1-1 dir0 levels x) f0-20)) + (set! (-> s1-1 dir0 levels y) (* (-> s1-1 dir0 levels y) f0-20)) + (set! (-> s1-1 dir1 levels x) (* (-> s1-1 dir1 levels x) f0-20)) + (set! (-> s1-1 dir1 levels y) (* (-> s1-1 dir1 levels y) f0-20)) + (set! (-> s1-1 dir2 levels x) (* (-> s1-1 dir2 levels x) f0-20)) + (set! (-> s1-1 dir2 levels y) (* (-> s1-1 dir2 levels y) f0-20)) + ) + (vu-lights<-light-group! s2-0 s1-1) + ) + ) + ) + (.lvf vf2 (&-> s2-0 color 0 quad)) + (.lvf vf3 (&-> s2-0 color 1 quad)) + (.lvf vf4 (&-> s2-0 color 2 quad)) + (.lvf vf5 (&-> s2-0 ambient quad)) + (.mul.vf vf5 vf5 vf28) + (.mul.vf vf2 vf2 vf28) + (.mul.vf vf3 vf3 vf28) + (.mul.vf vf4 vf4 vf28) + (.add.vf vf5 vf5 vf29) + (.svf (&-> s2-0 color 0 quad) vf2) + (.svf (&-> s2-0 color 1 quad) vf3) + (.svf (&-> s2-0 color 2 quad) vf4) + (.svf (&-> s2-0 ambient quad) vf5) + (.mov v1-37 vf5) + ) + ) + (if *display-lights* + (add-debug-lights + #t + (bucket-id debug-draw0) + (the-as (inline-array light) (-> s3-0 light-group)) + (-> arg1 origin) + ) + ) + (let ((at-0 *math-camera*)) + (.lvf vf16 (&-> at-0 plane 0 quad)) + (.lvf vf17 (&-> at-0 plane 1 quad)) + (.lvf vf18 (&-> at-0 plane 2 quad)) + (.lvf vf19 (&-> at-0 plane 3 quad)) + (.lvf vf20 (&-> at-0 guard-plane 0 quad)) + (.lvf vf21 (&-> at-0 guard-plane 1 quad)) + (.lvf vf22 (&-> at-0 guard-plane 2 quad)) + (.lvf vf23 (&-> at-0 guard-plane 3 quad)) + (.lvf vf24 (&-> at-0 camera-rot vector 0 quad)) + (.lvf vf25 (&-> at-0 camera-rot vector 1 quad)) + (.lvf vf26 (&-> at-0 camera-rot vector 2 quad)) + (.lvf vf27 (&-> at-0 camera-rot vector 3 quad)) + ) + (let ((v1-42 (the-as vector (+ 176 (the-as int (the-as terrain-context #x70000000)))))) + (.lvf vf15 (&-> s4-0 quad)) + (.mul.w.vf acc vf27 vf0) + (.add.mul.x.vf acc vf24 vf15 acc) + (.add.mul.y.vf acc vf25 vf15 acc) + (.add.mul.z.vf vf15 vf26 vf15 acc :mask #b111) + (.mul.vf vf28 vf15 vf15) + (.max.w.vf vf29 vf0 vf0) + (.add.y.vf acc vf28 vf28) + (.add.mul.z.vf vf28 vf29 vf28 acc :mask #b1) + (.sqrt.vf Q vf28 :ftf #b0) + (.sub.w.vf vf28 vf0 vf15 :mask #b1000) + (.wait.vf) + (.add.vf vf15 vf28 Q :mask #b1000) + (.svf (&-> v1-42 quad) vf15) + (when (< 0.0 (+ (-> v1-42 z) (-> arg1 bounds w))) + (let ((lod-to-use 0)) + (let ((cam-dist (-> v1-42 w))) + (when (nonzero? (-> arg1 lod-set max-lod)) + (cond + ((>= (-> arg1 force-lod) 0) + (set! lod-to-use (-> arg1 force-lod)) + (if (< (-> arg1 lod-set lod (-> arg1 lod-set max-lod) dist) cam-dist) + (return #f) + ) + ) + (else + (while (and (< lod-to-use (-> arg1 lod-set max-lod)) (< (-> arg1 lod-set lod lod-to-use dist) cam-dist)) + (+! lod-to-use 1) + ) + ) + ) + ) + (if (and (< (-> arg1 lod-set lod lod-to-use dist) cam-dist) (< (-> arg1 force-lod) 0)) + (return #f) + ) + (let ((v1-64 (-> arg1 sink-group level)) + (a0-26 (+ (-> arg1 sink-group merc-sink foreground-texture-page) 6)) + ) + (when (zero? (logand (-> arg1 status) (draw-status drwf06))) + (if (< cam-dist (-> v1-64 closest-object a0-26)) + (set! (-> v1-64 closest-object a0-26) cam-dist) + ) + (when (and (!= a0-26 6) (!= (-> arg1 level-index) 2)) + (let ((a1-45 (cond + ((< 102400.0 cam-dist) + (-> arg1 mgeo header masks 0) + ) + ((< 81920.0 cam-dist) + (-> arg1 mgeo header masks 1) + ) + (else + (-> arg1 mgeo header masks 2) + ) + ) + ) + ) + (logior! (-> v1-64 texture-mask a0-26) a1-45) + ) + ) + ) + ) + (if (or (guard-band-cull s4-0) (< cam-dist (* 1.2 (-> *math-camera* d)))) + (logior! (-> arg1 status) (draw-status drwf00)) + (logclear! (-> arg1 status) (draw-status drwf00)) + ) + (logior! (-> arg1 status) (draw-status drwf03)) + (if (logtest? (-> arg1 status) (draw-status drwf05)) + (return #f) + ) + (draw-bones arg1 arg3 cam-dist) + ) + (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status drwf07))) + (let ((v1-82 *matrix-engine*)) + (set! (-> v1-82 (-> v1-82 length)) (process->handle sv-16)) + (+! (-> v1-82 length) 1) + ) + ) + (lod-set! arg1 lod-to-use) + ) ) - ) ) - ) - (if (or (guard-band-cull s4-0) (< f30-1 (* 1.2 (-> *math-camera* d)))) - (logior! (-> arg1 status) 1) - (set! (-> arg1 status) (logand -2 (-> arg1 status))) - ) - (logior! (-> arg1 status) 8) - (if (logtest? (-> arg1 status) 32) - (return #f) - ) - ;(draw-bones arg1 arg3 f30-1) ) - (when (and (< s3-1 (-> arg1 cur-lod)) (logtest? (-> arg1 status) 128)) - (let ((v1-82 *matrix-engine*)) - (set! (-> v1-82 (-> v1-82 length)) (process->handle sv-16)) - (+! (-> v1-82 length) 1) - ) - ) - (lod-set! arg1 s3-1) - ) ) - ) ) - ) + 0 + (none) ) - 0 - (none) - ) ) +(define *hud-lights* (new 'global 'vu-lights)) +(set-vector! (-> *hud-lights* direction 0) 1.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* direction 1) 0.0 1.0 0.0 1.0) +(set-vector! (-> *hud-lights* direction 2) 0.0 0.0 1.0 1.0) +(set-vector! (-> *hud-lights* color 0) 0.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* color 1) 0.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* color 2) 0.5 0.5 0.5 1.0) +(set-vector! (-> *hud-lights* ambient) 0.5 0.5 0.5 1.0) +(defun dma-add-process-drawable-hud ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) + (logclear! (-> arg1 status) (draw-status drwf03)) + (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (let ((v1-6 (the-as vu-lights (+ 64 #x70000000))) + (a0-3 *hud-lights*) + ) + (set! (-> v1-6 direction 0 quad) (-> a0-3 direction 0 quad)) + (set! (-> v1-6 direction 1 quad) (-> a0-3 direction 1 quad)) + (set! (-> v1-6 direction 2 quad) (-> a0-3 direction 2 quad)) + (set! (-> v1-6 color 0 quad) (-> a0-3 color 0 quad)) + (set! (-> v1-6 color 1 quad) (-> a0-3 color 1 quad)) + (set! (-> v1-6 color 2 quad) (-> a0-3 color 2 quad)) + (set! (-> v1-6 ambient quad) (-> a0-3 ambient quad)) + ) + (lod-set! arg1 0) + (logior! (-> arg1 status) (draw-status drwf03)) + (draw-bones-hud arg1 arg3) + ) + 0 + (none) + ) \ No newline at end of file diff --git a/goal_src/engine/draw/process-drawable.gc b/goal_src/engine/draw/process-drawable.gc index 5790279845..54aea2b268 100644 --- a/goal_src/engine/draw/process-drawable.gc +++ b/goal_src/engine/draw/process-drawable.gc @@ -12,14 +12,14 @@ (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)) + (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) ) @@ -29,15 +29,15 @@ (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)) + (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 ) @@ -46,17 +46,17 @@ (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 - ) + (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 + ) ) (defun vector<-cspace+vector! ((arg0 vector) (arg1 cspace) (arg2 vector)) @@ -65,40 +65,33 @@ (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)) - ) + (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 ) - a3-0 - ) ) ;; ERROR: function was not converted to expressions. Cannot decompile. -(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))) - ) +(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 ) - (set! (-> v0-0 jgeo) arg1) - (set! (-> v0-0 process) arg0) - v0-0 - ) ) (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) + (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) ) @@ -106,173 +99,128 @@ (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) - ) + (set! (-> obj cur-lod) -1) + (lod-set! obj a1-2) + ) 0 (none) ) -(defmethod - dummy-9 - lod-set - ((obj lod-set) (arg0 skeleton-group) (arg1 art-group) (arg2 entity)) +(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)))) + (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 ) -(define - *default-skel-template* - '( - (align root #f) (prejoint root cspace<-parented-matrix-joint!) - ) - ) +(define *default-skel-template* '((align root #f) (prejoint root cspace<-parented-matrix-joint!))) -(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)) +(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))) ) - (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) + ) + ) ) - (+! 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 ) - (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 - ) ) ;; WARN: Unsupported inline assembly instruction kind - [sync.l] @@ -284,200 +232,150 @@ (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) - ) + (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))) ) - (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 ) - (.sync.l) - ;(.cache dxwbin a2-3 0) - (.sync.l) - ;(.cache dxwbin a2-3 1) - ) - (.sync.l) - 0 ) - ) 0 ) (defun execute-math-engine () (let ((gp-0 *matrix-engine*)) - (countdown (s5-0 (-> gp-0 length)) - (let ((a0-1 (the-as process-drawable (handle->process (-> gp-0 s5-0))))) - (if a0-1 - (dummy-17 a0-1) + (countdown (s5-0 (-> gp-0 length)) + (let ((a0-1 (handle->process (-> gp-0 s5-0)))) + (if a0-1 + (dummy-17 (the-as process-drawable a0-1)) + ) + ) ) - ) + (set! (-> gp-0 length) 0) ) - (set! (-> gp-0 length) 0) - ) 0 0 ) (defmethod dummy-17 process-drawable ((obj process-drawable)) (cond - (#t;;(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) + (#t;;(logtest? (-> obj draw status) (draw-status drwf01 drwf02)) ) - (set! - (-> obj draw origin quad) - (-> obj draw skeleton bones 3 transform vector 3 quad) + ((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)) + (else + (let ((s5-0 (-> obj draw mgeo num-joints))) + (let ((s4-0 (+ s5-0 2))) + (+ s4-0 1) + ((-> obj skel generate-frame-function) + (the-as (inline-array vector) (+ 2416 (the-as int (the-as terrain-context #x70000000)))) + s4-0 + obj ) - (+ 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)) + (if (-> obj skel prebind-function) + ((-> obj skel prebind-function) (the-as pointer (+ 2416 #x70000000)) s4-0 obj) ) - (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)) + (dotimes (s4-1 1) + (let* ((v1-25 (-> obj node-list data s4-1)) + (t9-3 (-> v1-25 param0)) + ) + (if t9-3 + ((the-as (function cspace basic basic int) t9-3) v1-25 (-> v1-25 param1) (-> v1-25 param2)) + ) + ) ) - ) - ) - ) - (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)) + (dotimes (s4-2 2) + (let* ((a0-15 (-> obj node-list data (+ s4-2 1))) + (a1-5 (+ (* s4-2 64) 2416 #x70000000)) + (t9-4 (-> a0-15 param0)) + ) + (if t9-4 + ((the-as (function cspace pointer none) t9-4) a0-15 (the-as pointer a1-5)) + ) + ) + ) + (let ((s4-3 3)) + (dotimes (s3-0 s5-0) + (let ((a0-17 (-> obj node-list data (+ s3-0 s4-3))) + (a1-7 (+ (* 48 s3-0) 2544 #x70000000)) + ) + (if (-> a0-17 param0) + ((the-as (function cspace matrix none) (-> a0-17 param0)) a0-17 (the-as matrix a1-7)) + (cspace<-parented-transformq-joint! a0-17 (the-as transformq a1-7)) + ) + ) + ) ) - ) ) - ) (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) + ((-> obj skel postbind-function) obj) ) - ) + (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)) + ) ) - ) - (vector<-cspace! (-> obj draw origin) (-> obj node-list data v1-54)) ) - ) ) - ) 0 (none) ) (defmethod dummy-18 process-drawable ((obj process-drawable)) (if (type-type? (-> obj root type) collide-shape) - (clear-collide-with-as (the-as collide-shape (-> obj root))) - ) + (clear-collide-with-as (the-as collide-shape (-> obj root))) + ) (if (nonzero? (-> obj skel)) - (ja-channel-set! 0) - ) + (ja-channel-set! 0) + ) (process-entity-status! obj (entity-perm-status dead) #t) (none) ) (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) - ) + (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 ) (defmethod deactivate process-drawable ((obj process-drawable)) (if (nonzero? (-> obj part)) - (kill-and-free-particles (-> obj part)) - ) + (kill-and-free-particles (-> obj part)) + ) (if (nonzero? (-> obj sound)) - (stop! (-> obj sound)) - ) + (stop! (-> obj sound)) + ) ((method-of-type process deactivate) obj) (none) ) @@ -485,33 +383,28 @@ (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) - ) + (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) ) - ) - (suspend) + (none) ) - (none) - ) ) (define-extern ja-post (function none :behavior process-drawable)) @@ -526,330 +419,235 @@ ;; WARN: Stack slot offset 20 signed mismatch ;; WARN: Stack slot offset 20 signed mismatch ;; WARN: Stack slot offset 20 signed mismatch -(defmethod - initialize-skeleton - process-drawable - ((obj process-drawable) (arg0 skeleton-group) (arg1 pair)) +(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) + ((= (-> arg0 texture-level) 2) + (-> *level* level-default) + ) + ((-> obj entity) + (-> obj entity extra level) + ) + (else + (-> *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)) + (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) (draw-status drwf04)) + (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 (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) + (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)) ) - ) - ) - (let ((a0-39 (if (= (-> arg0 texture-level) 2) - 2 - (-> s1-0 index) + (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) (draw-status drwf07)) + (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) ) - ) - ) - (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) + ) + (set! (-> s2-1 effect) (new 'process 'effect-control obj)) + ) ) - (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! (-> s3-0 skeleton bones 0 transform vector 3 quad) (-> (the-as vector (get-property-struct + (-> sv-16 extra) + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + quad + ) + ) + ) ) - (set! (-> s2-1 effect) (new 'process 'effect-control obj)) - ) ) - ) - (else - (set! - (-> s3-0 skeleton bones 0 transform vector 3 quad) - (-> - (the-as - vector - (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)) - (find-collision-meshes gp-1) + (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)) + (find-collision-meshes gp-1) + ) ) - ) (label cfg-59) (none) ) -(defmethod - dummy-15 - process-drawable - ((obj process-drawable) (arg0 string) (arg1 object)) +(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) - ) + (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 ) -(defmethod - dummy-16 - process-drawable - ((obj process-drawable) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(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)) + (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) ) - (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)) - ) - ) - ) + (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (the-as quaternion (-> arg1 1)))) + ) (the-as collide-shape (-> obj root)) ) (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 - ) + (cond + ((zero? (-> self skel active-channels)) + #t + ) + ((= (-> v1-2 num-func) num-func-seek!) + (= (-> v1-2 frame-num) (-> v1-2 param 0)) + ) + (else + #t + ) + ) ) - ) ) (defbehavior ja-min? process-drawable ((arg0 int)) @@ -858,11 +656,8 @@ (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)) + (>= (-> v1-2 frame-num) (the float (+ (-> v1-2 frame-group data 0 length) -1))) ) - ) ) (defbehavior ja-num-frames process-drawable ((arg0 int)) @@ -877,29 +672,27 @@ (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 - ) + (+ (* (-> a0-2 frame-num) (-> v1-2 artist-step)) (if (and v1-2 (nonzero? v1-2)) + (-> v1-2 artist-base) + 0.0 + ) + ) ) - ) ) (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 - ) + (/ (- arg0 (if (and v1-3 (nonzero? v1-3)) + (-> v1-3 artist-base) + 0.0 + ) + ) + (if v1-3 + (-> v1-3 artist-step) + 1.0 + ) ) - (if v1-3 - (-> v1-3 artist-step) - 1.0 - ) ) - ) ) (defbehavior ja-speed process-drawable ((arg0 int)) @@ -916,177 +709,131 @@ (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 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) ) - (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 ) (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) + ((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 + ) ) - (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) ) - (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))) + (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)) + ) ) - 48 - ) + (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 ) - (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 ) - ) ) -(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)))) +(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))) ) - ) - (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) ) (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 - ) + (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 + ) ) (defbehavior ja-eval process-drawable () @@ -1094,19 +841,19 @@ (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) - ) + (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) ) - ) - (&+! gp-0 48) ) - ) 0 ) @@ -1115,21 +862,21 @@ (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) + (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) ) - (else - (if (!= (-> s5-0 eval-time) s4-0) - (joint-control-channel-eval s5-0) - ) - ) ) - (&+! s5-0 48) - ) ) - ) 0 ) @@ -1138,75 +885,66 @@ ;; 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 #f ;;(nonzero? (-> self skel)) TODO this stuff is not done - (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 ((gp-1 (logtest? (-> self draw status) (draw-status drwf04)))) + (logclear! (-> self draw status) (draw-status drwf02 drwf04)) + (when (nonzero? (-> self skel)) + ;(dummy-19 self) TODO + (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) ) - ) ) - (let ((v1-24 *matrix-engine*)) - (set! (-> v1-24 (-> v1-24 length)) (process->handle self)) - (+! (-> v1-24 length) 1) - ) - ) 0 (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)) + ((< (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) ) - (('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)) - ) + (-> gp-0 -1) ) - (&+! s4-0 48) - ) - (-> gp-0 -1) ) + (else + 0.0 + ) ) - (else - 0.0 - ) - ) ) (defbehavior anim-loop process-drawable () (logior! (-> self mask) (process-mask sleep-code)) (while #t - (nop!) - (suspend) - ) + (nop!) + (suspend) + ) (none) ) @@ -1224,105 +962,92 @@ (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) - ) + (dummy-47 gp-0) + (dummy-44 gp-0) + (dummy-45 gp-0) + ) 0 ) (defbehavior pusher-post process-drawable () (ja-post) (let ((gp-0 (the-as collide-shape (-> self root)))) - (dummy-47 gp-0) - (dummy-45 gp-0) - ) + (dummy-47 gp-0) + (dummy-45 gp-0) + ) 0 ) (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)) + (while (and + *target* + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + (suspend) ) - (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) + (while (or + (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + ) + (suspend) ) - (suspend) - ) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) arg0) - (suspend) - ) + (suspend) + ) (process-release? *target*) (suspend) 0 ) -(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) +(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) - ) + (process-entity-status! self (entity-perm-status dead) #t) + ) ) - ) + ) ) - ) + ) (none) ) ;; WARN: Found some very strange gotos. Check result carefully, this is not well tested. -(defbehavior - process-drawable-birth-fuel-cell process-drawable - ((arg0 entity) (arg1 vector) (arg2 symbol)) +(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) (fact-options)) - (if arg2 - (set! (-> s4-0 options) (fact-options fop6)) - ) - (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) - (label cfg-12) - (birth-pickup-at-point - gp-0 - (pickup-type fuel-cell) - (the float s5-0) - #f - self - s4-0 + (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) (fact-options)) + (if arg2 + (set! (-> s4-0 options) (fact-options fop6)) + ) + (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) + (label cfg-12) + (birth-pickup-at-point gp-0 (pickup-type fuel-cell) (the float s5-0) #f self s4-0) + (when (not (-> self child)) + (suspend) + (goto cfg-12) + ) + ) ) - (when (not (-> self child)) - (suspend) - (goto cfg-12) - ) - ) ) - ) 0 (none) ) @@ -1334,98 +1059,83 @@ ) (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*) + (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) + ) + ) + ) ) - (else + ) + (let ((s4-1 (-> arg0 skel active-channels))) + (when (< (-> arg0 skel allocated-length) s4-1) (format - *valid-con* - "ERROR: ~A has an invalid geo ~A~%" - s3-0 - (-> s3-0 geo) - ) + *valid-con* + "ERROR: ~~A has ~D joint channels, but only ~D are allowed~%" + arg0 + s4-1 + (-> arg0 skel allocated-length) + ) (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 - ) + (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 ) - (when (not s5-0) - (format *valid-con* "--------------------------------~%~%") - (format 0 "~S" *valid-con*) - ) - s5-0 - ) ) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index 9df08c8fbd..fb2a6be726 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -1180,13 +1180,13 @@ (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) 8) + (logtest? (-> obj draw status) (draw-status drwf03)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) @@ -1470,7 +1470,7 @@ ) (when (nonzero? (-> self part)) (cond - ((logtest? (-> self draw status) 6) + ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) (kill-and-free-particles (-> self part)) (if (nonzero? (-> self sound)) (kill-and-free-particles (-> self part)) @@ -1662,7 +1662,7 @@ (when (and (logtest? (-> self skel status) 32) (and (>= (ja-aframe-num 0) f30-0) (-> self state-object))) (set! (-> self state-object) #f) (kill-and-free-particles (-> self part)) - (logior! (-> self draw status) 32) + (logior! (-> self draw status) (draw-status drwf05)) (if (not (or (logtest? (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) @@ -1683,7 +1683,7 @@ (sound-play-by-name (static-sound-name "pu-powercell") (new-sound-id) 1024 0 0 1 #t) (clear-collide-with-as (-> self root-override)) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (process-entity-status! self (entity-perm-status dead) #t) (stop! (-> self sound)) (while (handle->process (-> *game-info* other-camera-handle)) @@ -2204,7 +2204,7 @@ (let ((v1-20 (-> self skel root-channel 0))) (set! (-> v1-20 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) ) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (vector-reset! (-> self draw origin)) (go-virtual wait) ) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index 8167fd3d05..aaf1c9036a 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -12,7 +12,6 @@ (define-extern convert-to-hud-object (function process-drawable hud none :behavior hud)) ;; TODO - temporary -(define-extern command-get-process (function object process-drawable process :behavior camera-tracker)) (define-extern process-drawable-from-entity! (function process-drawable entity-actor none)) @@ -22,8 +21,6 @@ ;; TODO - for jungle-mirrors (define-extern line-in-view-frustum? (function vector vector symbol)) -;; decomp begins - (declare-type beach-part part-spawner) (define-extern beach-part-grotto-1 (state beach-part)) @@ -36,102 +33,85 @@ ;; DECOMP BEGINS -(defbehavior - clone-anim-once process-drawable - ((arg0 handle) (arg1 int) (arg2 symbol) (arg3 string)) +(defbehavior clone-anim-once process-drawable ((arg0 handle) (arg1 int) (arg2 symbol) (arg3 string)) (set! (-> self skel status) (logand -33 (-> self skel status))) (let ((s5-0 (handle->process arg0))) - (if (the-as process-drawable s5-0) - (joint-control-copy! - (-> self skel) - (-> (the-as process-drawable s5-0) skel) - ) - ) - (cond - ((and - (the-as process-drawable s5-0) - (joint-control-remap! - (-> self skel) - (-> self draw art-group) - (-> (the-as process-drawable s5-0) draw art-group) - '() - 0 - arg3 - ) - ) - (when arg2 - (let* ((s4-1 (-> self root)) - (a0-7 - (if - (and (nonzero? s4-1) (type-type? (-> s4-1 type) collide-shape)) - (the-as collide-shape s4-1) - ) - ) - ) - (if a0-7 - (TODO-RENAME-30 a0-7 (-> (the-as process-drawable s5-0) root trans)) - (set! - (-> self root trans quad) - (-> (the-as process-drawable s5-0) root trans quad) - ) + (if (the-as process-drawable s5-0) + (joint-control-copy! (-> self skel) (-> (the-as process-drawable s5-0) skel)) ) - ) - (quaternion-copy! - (-> self root quat) - (-> (the-as process-drawable s5-0) root quat) - ) - ) - (if (logtest? (-> (the-as process-drawable s5-0) skel status) 32) - (logior! (-> self skel status) 32) - ) - (set! (-> self draw status) (logand -7 (-> self draw status))) - (if (not (-> self skel root-channel 0 frame-group)) - (logior! (-> self draw status) 4) - ) - (let* ((s5-1 self) - (v1-37 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) manipy)) - s5-1 - ) - ) + (cond + ((and (the-as process-drawable s5-0) (joint-control-remap! + (-> self skel) + (-> self draw art-group) + (-> (the-as process-drawable s5-0) draw art-group) + '() + 0 + arg3 + ) ) - (if (and manipy (not (-> (the-as manipy v1-37) draw?))) - (logior! (-> self draw status) 4) + (when arg2 + (let* ((s4-1 (-> self root)) + (a0-7 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) collide-shape)) + (the-as collide-shape s4-1) + ) + ) + ) + (if a0-7 + (TODO-RENAME-30 a0-7 (-> (the-as process-drawable s5-0) root trans)) + (set! (-> self root trans quad) (-> (the-as process-drawable s5-0) root trans quad)) + ) + ) + (quaternion-copy! (-> self root quat) (-> (the-as process-drawable s5-0) root quat)) + ) + (if (logtest? (-> (the-as process-drawable s5-0) skel status) 32) + (logior! (-> self skel status) 32) + ) + (logclear! (-> self draw status) (draw-status drwf01 drwf02)) + (if (not (-> self skel root-channel 0 frame-group)) + (logior! (-> self draw status) (draw-status drwf02)) + ) + (let* ((s5-1 self) + (v1-37 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) manipy)) + s5-1 + ) + ) + ) + (if (and manipy (not (-> (the-as manipy v1-37) draw?))) + (logior! (-> self draw status) (draw-status drwf02)) + ) + ) + (dummy-17 self) + (let ((a0-22 (-> self skel effect))) + (if a0-22 + (TODO-RENAME-9 a0-22) + ) + ) + (if (logtest? (-> self skel status) 72) + (merc-blend-shape self) + ) + (if (logtest? (-> self skel status) 384) + (merc-eye-anim self) + ) ) + (else + (logior! (-> self draw status) (draw-status drwf01)) + (ja-post) + ) ) - (dummy-17 self) - (let ((a0-22 (-> self skel effect))) - (if a0-22 - (TODO-RENAME-9 a0-22) - ) - ) - (if (logtest? (-> self skel status) 72) - (merc-blend-shape self) - ) - (if (logtest? (-> self skel status) 384) - (merc-eye-anim self) - ) - ) - (else - (logior! (-> self draw status) 2) - (ja-post) - ) ) - ) (if (>= arg1 0) - (vector<-cspace! (-> self draw origin) (-> self node-list data arg1)) - ) + (vector<-cspace! (-> self draw origin) (-> self node-list data arg1)) + ) 0 (none) ) -(defbehavior - clone-anim process-drawable - ((arg0 handle) (arg1 int) (arg2 symbol) (arg3 string)) +(defbehavior clone-anim process-drawable ((arg0 handle) (arg1 int) (arg2 symbol) (arg3 string)) (ja-post) (while (handle->process arg0) - (clone-anim-once arg0 arg1 #t arg3) - (suspend) - ) + (clone-anim-once arg0 arg1 #t arg3) + (suspend) + ) (set! (-> self skel status) (logand -33 (-> self skel status))) 0 (none) @@ -140,58 +120,44 @@ (defstate swingpole-stance (swingpole) :code (behavior () - (while #t - (when - (and - *target* - (< - (vector-vector-distance - (-> self root trans) - (-> *target* control unknown-vector90) + (while #t + (when (and + *target* + (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) + (logtest? (-> *target* control root-prim prim-core action) 64) + (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range)))) + ) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'pole-grab) + (set! (-> a1-1 param 0) (the-as uint self)) + (if (send-event-function *target* a1-1) + (go swingpole-active) + ) + ) ) - (-> self range) - ) - (logtest? (-> *target* control root-prim prim-core action) 64) - (< - (-> *target* control unknown-vector90 y) - (+ (-> self root trans y) (* 0.5 (-> self range))) - ) + (suspend) ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 1) - (set! (-> a1-1 message) 'pole-grab) - (set! (-> a1-1 param 0) (the-as uint self)) - (if (send-event-function *target* a1-1) - (go swingpole-active) - ) - ) - ) - (suspend) + (none) ) - (none) - ) ) (defstate swingpole-active (swingpole) :code (behavior () - (suspend) - (while - (and - *target* - (= (handle->process (-> *target* control unknown-handle10)) self) - ) (suspend) + (while (and *target* (= (handle->process (-> *target* control unknown-handle10)) self)) + (suspend) + ) + (let ((gp-0 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-0) 150) + (suspend) + ) + ) + (go swingpole-stance) + (none) ) - (let ((gp-0 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-0) 150) - (suspend) - ) - ) - (go swingpole-stance) - (none) - ) ) (defmethod init-from-entity! swingpole ((obj swingpole) (arg0 entity-actor)) @@ -217,10 +183,7 @@ (the-as (function none :behavior process-hidden) nothing) ) -(defmethod - init-from-entity! - process-hidden - ((obj process-hidden) (arg0 entity-actor)) +(defmethod init-from-entity! process-hidden ((obj process-hidden) (arg0 entity-actor)) "Copy defaults from the entity." (process-entity-status! obj (entity-perm-status dead) #t) (go (method-of-object obj die)) @@ -246,542 +209,380 @@ (defstate manipy-idle (manipy) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-0 none)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'attackable) - (cond - ((-> arg3 param 0) - (set! - v0-0 - (the-as - none - (logior (process-mask attackable) (-> self mask)) - ) - ) - (set! (-> self mask) (the-as process-mask v0-0)) + (local-vars (v0-0 none)) + (let ((v1-0 arg2)) + (the-as + object + (cond + ((= v1-0 'attackable) + (cond + ((-> arg3 param 0) + (set! v0-0 (the-as none (logior (process-mask attackable) (-> self mask)))) + (set! (-> self mask) (the-as process-mask v0-0)) + ) + (else + (set! v0-0 (the-as none (logclear (-> self mask) (process-mask attackable)))) + (set! (-> self mask) (the-as process-mask v0-0)) + ) + ) + v0-0 + ) + ((= v1-0 'blend-shape) + (cond + ((-> arg3 param 0) + (set! v0-0 (the-as none (logior (-> self skel status) 264))) + (set! (-> self skel status) (the-as uint v0-0)) + ) + (else + (set! v0-0 (the-as none (logand -265 (-> self skel status)))) + (set! (-> self skel status) (the-as uint v0-0)) + ) + ) + v0-0 + ) + ((= v1-0 'shadow) + (cond + ((-> arg3 param 0) + (set! v0-0 (the-as none (-> self shadow-backup))) + (set! (-> self draw shadow) (the-as shadow-geo v0-0)) + v0-0 + ) + (else + (set! (-> self draw shadow) #f) + #f + ) + ) + ) + ((= v1-0 'trans-hook) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self new-trans-hook) (the-as (function none) v0-0)) + v0-0 + ) + ((= v1-0 'post-hook) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self new-post-hook) (the-as (function none) v0-0)) + v0-0 + ) + ((= v1-0 'eval) + ((the-as (function manipy none) (-> arg3 param 0)) self) + ) + ((= v1-0 'become-hud-object) + (convert-to-hud-object self (the-as hud (-> arg3 param 0))) + ) + ((= v1-0 'event-hook) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self cur-event-hook) (the-as (function none) v0-0)) + v0-0 + ) + ((= v1-0 'art-joint-anim) + (set! (-> self new-joint-anim) + (the-as art-joint-anim (dummy-10 (-> self draw art-group) (the-as string (-> arg3 param 0)) art-joint-anim)) + ) + (set! v0-0 (the-as none (-> arg3 param 1))) + (set! (-> self new-joint-anim-blend) (the-as uint v0-0)) + v0-0 + ) + ((= v1-0 'anim-mode) + (when (nonzero? (-> self skel)) + (set! (-> self anim-mode) (the-as symbol (-> arg3 param 0))) + (if (= (-> self anim-mode) 'clone-anim) + (ja-post) + ) + (-> self anim-mode) + ) + ) + ((or (= v1-0 'origin-joint-index) (= v1-0 'center-joint)) + (set! (-> self draw origin-joint-index) (-> arg3 param 0)) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self draw shadow-joint-index) (the-as uint v0-0)) + v0-0 + ) + ((= v1-0 'max-vis-dist) + (let ((f0-0 (the-as float (-> arg3 param 0)))) + (set! (-> self draw lod-set lod (-> self draw lod-set max-lod) dist) f0-0) + f0-0 + ) + ) + ((= v1-0 'grab) + (set! (-> self cur-grab-handle) (process->handle (the-as process (-> arg3 param 0)))) + (let ((v1-30 (handle->process (-> self cur-grab-handle)))) + (when v1-30 + (set! v0-0 (the-as none (-> self old-grab-pos))) + (set! (-> (the-as vector v0-0) quad) (-> (the-as process-drawable v1-30) root trans quad)) + v0-0 + ) + ) + ) + ((= v1-0 'target) + (set! v0-0 (the-as none (process->handle (the-as process (-> arg3 param 0))))) + (set! (-> self cur-target-handle) (the-as handle v0-0)) + v0-0 + ) + ((= v1-0 'trans) + (cond + ((type-type? (-> self root type) collide-shape) + (TODO-RENAME-30 (the-as collide-shape (-> self root)) (the-as vector (-> arg3 param 0))) + ) + (else + (set! v0-0 (the-as none (-> self root trans))) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + v0-0 + ) + ) + ) + ((= v1-0 'rot) + (let ((s5-0 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! s5-0 (the-as float (-> arg3 param 0))) + (matrix->quaternion (-> self root quat) s5-0) + ) + ) + ((= v1-0 'rot-quat) + (quaternion-copy! (-> self root quat) (the-as quaternion (-> arg3 param 0))) + ) + ((= v1-0 'clone-copy-trans) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self clone-copy-trans) (the-as basic v0-0)) + v0-0 + ) + ((= v1-0 'release) + (set! (-> self cur-grab-handle) (the-as handle #f)) + #f + ) + ((= v1-0 'draw) + (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) + (cond + ((-> arg3 param 0) + (let ((v1-47 (logtest? (-> self draw status) (draw-status drwf01)))) + (logclear! (-> self draw status) (draw-status drwf01)) + (when v1-47 + (cond + ((nonzero? (-> self skel)) + (let ((gp-1 (-> self skel status))) + (logior! (-> self skel status) 1) + (set! v0-0 (ja-post)) + (set! (-> self skel status) gp-1) ) - (else - (set! - v0-0 - (the-as - none - (logclear (-> self mask) (process-mask attackable)) - ) - ) - (set! (-> self mask) (the-as process-mask v0-0)) - ) - ) v0-0 ) - ((= v1-0 'blend-shape) - (cond - ((-> arg3 param 0) - (set! - v0-0 - (the-as none (logior (-> self skel status) 264)) - ) - (set! (-> self skel status) (the-as uint v0-0)) - ) - (else - (set! - v0-0 - (the-as none (logand -265 (-> self skel status))) - ) - (set! (-> self skel status) (the-as uint v0-0)) - ) - ) - v0-0 - ) - ((= v1-0 'shadow) - (cond - ((-> arg3 param 0) - (set! v0-0 (the-as none (-> self shadow-backup))) - (set! (-> self draw shadow) (the-as shadow-geo v0-0)) - v0-0 - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ((= v1-0 'trans-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! - (-> self new-trans-hook) - (the-as (function none) v0-0) - ) - v0-0 - ) - ((= v1-0 'post-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! - (-> self new-post-hook) - (the-as (function none) v0-0) - ) - v0-0 - ) - ((= v1-0 'eval) - ((the-as (function manipy none) (-> arg3 param 0)) self) - ) - ((= v1-0 'become-hud-object) - (convert-to-hud-object self (the-as hud (-> arg3 param 0))) - ) - ((= v1-0 'event-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! - (-> self cur-event-hook) - (the-as (function none) v0-0) - ) - v0-0 - ) - ((= v1-0 'art-joint-anim) - (set! - (-> self new-joint-anim) - (the-as - art-joint-anim - (dummy-10 - (-> self draw art-group) - (the-as string (-> arg3 param 0)) - art-joint-anim - ) - ) - ) - (set! v0-0 (the-as none (-> arg3 param 1))) - (set! (-> self new-joint-anim-blend) (the-as uint v0-0)) - v0-0 - ) - ((= v1-0 'anim-mode) - (when (nonzero? (-> self skel)) - (set! - (-> self anim-mode) - (the-as symbol (-> arg3 param 0)) - ) - (if (= (-> self anim-mode) 'clone-anim) - (ja-post) - ) - (-> self anim-mode) - ) - ) - ((or (= v1-0 'origin-joint-index) (= v1-0 'center-joint)) - (set! (-> self draw origin-joint-index) (-> arg3 param 0)) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! (-> self draw shadow-joint-index) (the-as uint v0-0)) - v0-0 - ) - ((= v1-0 'max-vis-dist) - (let ((f0-0 (the-as float (-> arg3 param 0)))) - (set! - (-> - self - draw - lod-set - lod - (-> self draw lod-set max-lod) - dist - ) - f0-0 - ) - f0-0 - ) - ) - ((= v1-0 'grab) - (set! - (-> self cur-grab-handle) - (process->handle (the-as process (-> arg3 param 0))) - ) - (let ((v1-30 (handle->process (-> self cur-grab-handle)))) - (when v1-30 - (set! v0-0 (the-as none (-> self old-grab-pos))) - (set! - (-> (the-as vector v0-0) quad) - (-> (the-as process-drawable v1-30) root trans quad) - ) - v0-0 - ) - ) - ) - ((= v1-0 'target) - (set! - v0-0 - (the-as - none - (process->handle (the-as process (-> arg3 param 0))) - ) - ) - (set! (-> self cur-target-handle) (the-as handle v0-0)) - v0-0 - ) - ((= v1-0 'trans) - (cond - ((type-type? (-> self root type) collide-shape) - (TODO-RENAME-30 - (the-as collide-shape (-> self root)) - (the-as vector (-> arg3 param 0)) - ) - ) - (else - (set! v0-0 (the-as none (-> self root trans))) - (set! - (-> (the-as vector v0-0) quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - v0-0 - ) - ) - ) - ((= v1-0 'rot) - (let ((s5-0 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-0 (the-as float (-> arg3 param 0))) - (matrix->quaternion (-> self root quat) s5-0) - ) - ) - ((= v1-0 'rot-quat) - (quaternion-copy! - (-> self root quat) - (the-as quaternion (-> arg3 param 0)) - ) - ) - ((= v1-0 'clone-copy-trans) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! (-> self clone-copy-trans) (the-as basic v0-0)) - v0-0 - ) - ((= v1-0 'release) - (set! (-> self cur-grab-handle) (the-as handle #f)) - #f - ) - ((= v1-0 'draw) - (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) - (cond - ((-> arg3 param 0) - (let ((v1-47 (logtest? (-> self draw status) 2))) - (set! - (-> self draw status) - (logand -3 (-> self draw status)) - ) - (when v1-47 - (cond - ((nonzero? (-> self skel)) - (let ((gp-1 (-> self skel status))) - (logior! (-> self skel status) 1) - (set! v0-0 (ja-post)) - (set! (-> self skel status) gp-1) - ) - v0-0 - ) - (else - (ja-post) - ) - ) - ) - ) - ) - (else - (set! - v0-0 - (the-as none (logior (-> self draw status) 2)) - ) - (set! (-> self draw status) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ((= v1-0 'query) - (case (-> arg3 param 0) - (('grab) - (handle->process (-> self cur-grab-handle)) - ) - (('done) - (case (-> self anim-mode) - (('play1 'play) - (>= - (ja-frame-num 0) - (the - float - (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) - -2 - ) - ) - ) - ) - ) - ) - ) - ) - ((= v1-0 'set-frame-num) - (let ((v1-73 (-> self skel root-channel 0))) - (set! (-> v1-73 num-func) num-func-identity) - (let ((f0-2 (the-as float (-> arg3 param 0)))) - (set! (-> v1-73 frame-num) f0-2) - f0-2 - ) - ) - ) (else - (if (-> self cur-event-hook) - ((-> self cur-event-hook)) + (ja-post) ) - ) ) - ) + ) + ) + ) + (else + (set! v0-0 (the-as none (logior (-> self draw status) (draw-status drwf01)))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0 + ) + ) + ) + ((= v1-0 'query) + (case (-> arg3 param 0) + (('grab) + (handle->process (-> self cur-grab-handle)) + ) + (('done) + (case (-> self anim-mode) + (('play1 'play) + (>= (ja-frame-num 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -2 + ) + ) + ) + ) + ) + ) + ) + ) + ((= v1-0 'set-frame-num) + (let ((v1-73 (-> self skel root-channel 0))) + (set! (-> v1-73 num-func) num-func-identity) + (let ((f0-2 (the-as float (-> arg3 param 0)))) + (set! (-> v1-73 frame-num) f0-2) + f0-2 + ) + ) + ) + (else + (if (-> self cur-event-hook) + ((-> self cur-event-hook)) + ) + ) + ) + ) + ) ) - ) :trans (behavior () - (if (!= (-> self cur-trans-hook) (-> self new-trans-hook)) - (set! (-> self cur-trans-hook) (-> self new-trans-hook)) - ) - (if (!= (-> self cur-post-hook) (-> self new-post-hook)) - (set! (-> self cur-post-hook) (-> self new-post-hook)) - ) - (when - (and - (-> self new-joint-anim) - (nonzero? (-> self skel)) - (and (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (if (!= (-> self cur-trans-hook) (-> self new-trans-hook)) + (set! (-> self cur-trans-hook) (-> self new-trans-hook)) + ) + (if (!= (-> self cur-post-hook) (-> self new-post-hook)) + (set! (-> self cur-post-hook) (-> self new-post-hook)) + ) + (when (and (-> self new-joint-anim) (nonzero? (-> self skel)) (and + (!= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self new-joint-anim) + ) + (!= (-> self anim-mode) 'clone-anim) + ) ) - (-> self new-joint-anim) - ) - (!= (-> self anim-mode) 'clone-anim) - ) - ) - (ja-channel-push! 1 (the-as int (-> self new-joint-anim-blend))) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (-> self new-joint-anim) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - ) - (let ((v1-20 (handle->process (-> self cur-grab-handle)))) - (when v1-20 - (let ((gp-1 (-> (the-as process-drawable v1-20) root trans))) - (if (type-type? (-> self root type) collide-shape) - (TODO-RENAME-28 - (the-as collide-shape (-> self root)) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) + (ja-channel-push! 1 (the-as int (-> self new-joint-anim-blend))) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! gp-0 (-> self new-joint-anim) num-func-identity) + (set! (-> gp-0 frame-num) 0.0) ) - (vector+! - (-> self root trans) - (-> self root trans) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) - ) - ) - (set! (-> self old-grab-pos quad) (-> gp-1 quad)) ) - ) + (let ((v1-20 (handle->process (-> self cur-grab-handle)))) + (when v1-20 + (let ((gp-1 (-> (the-as process-drawable v1-20) root trans))) + (if (type-type? (-> self root type) collide-shape) + (TODO-RENAME-28 + (the-as collide-shape (-> self root)) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) + ) + (vector+! + (-> self root trans) + (-> self root trans) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) + ) + ) + (set! (-> self old-grab-pos quad) (-> gp-1 quad)) + ) + ) + ) + ((-> self cur-trans-hook)) + (none) ) - ((-> self cur-trans-hook)) - (none) - ) :code (behavior () - ;; TODO - fix me - (loop (suspend)) - ;; (logclear! (-> self mask) (process-mask heap-shrunk)) - ;; (while #t - ;; ((-> self cur-post-hook)) - ;; (if (!= (-> self anim-mode) 'clone-anim) - ;; (ja-post) - ;; ) - ;; (suspend) - ;; (case (-> self anim-mode) - ;; (('loop) - ;; (let ((a0-4 (-> self skel root-channel 0))) - ;; (set! (-> a0-4 param 0) 1.0) - ;; (joint-control-channel-group-eval! - ;; a0-4 - ;; (the-as art-joint-anim #f) - ;; num-func-loop! - ;; ) - ;; ) - ;; ) - ;; (('play) - ;; (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! - ;; ) - ;; ) - ;; ) - ;; (('copy-parent) - ;; (let ((v1-18 (-> self skel root-channel 0))) - ;; (set! (-> v1-18 num-func) num-func-identity) - ;; (set! - ;; (-> v1-18 frame-num) - ;; (-> - ;; (the-as process-drawable (ppointer->process (-> self parent))) - ;; skel - ;; root-channel - ;; 0 - ;; frame-num - ;; ) - ;; ) - ;; ) - ;; ) - ;; (('clone-parent) - ;; (let ((gp-0 (ppointer->process (-> self parent)))) - ;; (set! (-> self post-hook) #f) - ;; (joint-control-copy! - ;; (-> self skel) - ;; (-> (the-as process-drawable gp-0) skel) - ;; ) - ;; (joint-control-remap! - ;; (-> self skel) - ;; (-> self draw art-group) - ;; (-> (the-as process-drawable gp-0) draw art-group) - ;; '() - ;; 0 - ;; "" - ;; ) - ;; ) - ;; (dummy-17 self) - ;; ) - ;; (('clone-anim) - ;; (clone-anim-once (the-as handle (cond - ;; ((handle->process - ;; (-> self cur-target-handle) - ;; ) - ;; (the-as int (-> self cur-target-handle)) - ;; ) - ;; (else - ;; (let ((v1-29 (-> self parent))) - ;; (logior - ;; (shl - ;; (-> - ;; (the-as - ;; process-drawable - ;; (-> v1-29 0) - ;; ) - ;; pid - ;; ) - ;; 32 - ;; ) - ;; (.asm.sllv.r0 v1-29) - ;; ) - ;; ) - ;; ) - ;; ) - ;; ) - ;; (the-as - ;; int - ;; (-> self draw origin-joint-index) - ;; ) - ;; (the-as symbol (-> self clone-copy-trans)) "" - ;; ) - ;; ) - ;; (('still) - ;; ) - ;; (('play1) - ;; (let ((a0-33 (-> self skel root-channel 0))) - ;; (set! - ;; (-> a0-33 param 0) - ;; (the float (+ (-> a0-33 frame-group data 0 length) -1)) - ;; ) - ;; (set! (-> a0-33 param 1) 1.0) - ;; (joint-control-channel-group-eval! - ;; a0-33 - ;; (the-as art-joint-anim #f) - ;; num-func-seek! - ;; ) - ;; ) - ;; (if (ja-done? 0) - ;; (deactivate self) - ;; ) - ;; ) - ;; ) - ;; ) - ;; (none) - ) + (logclear! (-> self mask) (process-mask heap-shrunk)) + (while #t + ((-> self cur-post-hook)) + (if (!= (-> self anim-mode) 'clone-anim) + (ja-post) + ) + (suspend) + (case (-> self anim-mode) + (('loop) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) 1.0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + (('play) + (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!) + ) + ) + (('copy-parent) + (let ((v1-18 (-> self skel root-channel 0))) + (set! (-> v1-18 num-func) num-func-identity) + (set! (-> v1-18 frame-num) + (-> (the-as process-drawable (ppointer->process (-> self parent))) skel root-channel 0 frame-num) + ) + ) + ) + (('clone-parent) + (let ((gp-0 (ppointer->process (-> self parent)))) + (set! (-> self post-hook) #f) + (joint-control-copy! (-> self skel) (-> (the-as process-drawable gp-0) skel)) + (joint-control-remap! + (-> self skel) + (-> self draw art-group) + (-> (the-as process-drawable gp-0) draw art-group) + '() + 0 + "" + ) + ) + (dummy-17 self) + ) + (('clone-anim) + (clone-anim-once + (the-as handle (if (handle->process (-> self cur-target-handle)) + (the-as int (-> self cur-target-handle)) + (ppointer->handle (-> self parent)) + ) + ) + (the-as int (-> self draw origin-joint-index)) + (the-as symbol (-> self clone-copy-trans)) + "" + ) + ) + (('still) + ) + (('play1) + (let ((a0-33 (-> self skel root-channel 0))) + (set! (-> a0-33 param 0) (the float (+ (-> a0-33 frame-group data 0 length) -1))) + (set! (-> a0-33 param 1) 1.0) + (joint-control-channel-group-eval! a0-33 (the-as art-joint-anim #f) num-func-seek!) + ) + (if (ja-done? 0) + (deactivate self) + ) + ) + ) + ) + (none) + ) ) -(defbehavior - manipy-init manipy - ((arg0 vector) (arg1 entity) (arg2 skeleton-group) (arg3 vector)) +(defbehavior manipy-init manipy ((arg0 vector) (arg1 entity) (arg2 skeleton-group) (arg3 vector)) (stack-size-set! (-> self main-thread) 128) (logior! (-> self mask) (process-mask heap-shrunk)) (set! (-> self entity) arg1) (cond - ((= arg3 'collide-shape-moving) - (let - ((s4-1 - (new - 'process - 'collide-shape-moving - self - (collide-list-enum hit-by-player) + ((= arg3 'collide-shape-moving) + (let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) + (set! (-> s4-1 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-1 reaction) default-collision-reaction) + (set! (-> s4-1 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s4-1 s3-1) + ) + (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) + (backup-collide-with-as s4-1) + (set! (-> self root) s4-1) + ) + ) + (arg3 + (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint #x8040)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set-vector! (-> s2-0 local-sphere) (-> arg3 x) (-> arg3 y) (-> arg3 z) (-> arg3 w)) + (set-root-prim! s4-2 s2-0) + ) + (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) + (backup-collide-with-as s4-2) + (set! (-> self root) s4-2) ) - ) ) - (set! (-> s4-1 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-1 reaction) default-collision-reaction) - (set! - (-> s4-1 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) + (else + (set! (-> self root) (new 'process 'trsqv)) ) - (let - ((s3-1 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) - (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) - (set-root-prim! s4-1 s3-1) - ) - (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) - (backup-collide-with-as s4-1) - (set! (-> self root) s4-1) - ) ) - (arg3 - (let - ((s4-2 - (new 'process 'collide-shape self (collide-list-enum hit-by-player)) - ) - ) - (let - ((s2-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set-vector! - (-> s2-0 local-sphere) - (-> arg3 x) - (-> arg3 y) - (-> arg3 z) - (-> arg3 w) - ) - (set-root-prim! s4-2 s2-0) - ) - (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) - (backup-collide-with-as s4-2) - (set! (-> self root) s4-2) - ) - ) - (else - (set! (-> self root) (new 'process 'trsqv)) - ) - ) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self arg2 '()) (if (type-type? (-> self root type) collide-shape) - (dummy-47 (the-as collide-shape (-> self root))) - ) + (dummy-47 (the-as collide-shape (-> self root))) + ) (set! (-> self shadow-backup) (-> self draw shadow)) (set! (-> self new-trans-hook) nothing) (set! (-> self cur-trans-hook) nothing) @@ -793,17 +594,17 @@ (set! (-> self clone-copy-trans) #t) (set! (-> self draw?) #t) (cond - ((nonzero? (-> self skel)) - (set! (-> self new-joint-anim) (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + ((nonzero? (-> self skel)) + (set! (-> self new-joint-anim) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> self anim-mode) 'loop) ) - (set! (-> self anim-mode) 'loop) + (else + (set! (-> self anim-mode) 'still) + ) ) - (else - (set! (-> self anim-mode) 'still) - ) - ) (set! (-> self event-hook) (-> manipy-idle event)) (go manipy-idle) (none) @@ -811,94 +612,76 @@ (defmethod deactivate part-tracker ((obj part-tracker)) (if (nonzero? (-> obj part)) - (kill-and-free-particles (-> obj part)) - ) + (kill-and-free-particles (-> obj part)) + ) ((method-of-type process deactivate) obj) (none) ) (defbehavior part-tracker-notify part-tracker () (let ((gp-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-0 from) self) - (set! (-> gp-0 num-params) 1) - (set! (-> gp-0 message) 'notify) - (set! (-> gp-0 param 0) (the-as uint 'die)) - (let ((s5-0 send-event-function) - (s4-0 (ppointer->process (-> self parent))) - ) - (s5-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process)) - s4-0 - ) - gp-0 - ) + (set! (-> gp-0 from) self) + (set! (-> gp-0 num-params) 1) + (set! (-> gp-0 message) 'notify) + (set! (-> gp-0 param 0) (the-as uint 'die)) + (let ((s5-0 send-event-function) + (s4-0 (ppointer->process (-> self parent))) + ) + (s5-0 + (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process)) + s4-0 + ) + gp-0 + ) + ) ) - ) ) (defstate part-tracker-process (part-tracker) :code (behavior () - (set! (-> self start-time) (the-as uint (-> *display* base-frame-counter))) - (while - (< - (- (-> *display* base-frame-counter) (the-as int (-> self start-time))) - (the-as int (-> self duration)) - ) - (let ((gp-0 (handle->process (-> self target)))) - (when gp-0 - (if - (and - gp-0 - (type-type? (-> gp-0 type) process-drawable) - (nonzero? (-> (the-as process-drawable gp-0) root)) + (set! (-> self start-time) (the-as uint (-> *display* base-frame-counter))) + (while (< (- (-> *display* base-frame-counter) (the-as int (-> self start-time))) (the-as int (-> self duration))) + (let ((gp-0 (handle->process (-> self target)))) + (when gp-0 + (if (and gp-0 (type-type? (-> gp-0 type) process-drawable) (nonzero? (-> (the-as process-drawable gp-0) root))) + (vector+! (-> self root trans) (-> (the-as process-drawable gp-0) root trans) (-> self offset)) + ) + ) ) - (vector+! - (-> self root trans) - (-> (the-as process-drawable gp-0) root trans) - (-> self offset) + (let ((gp-1 (-> self root trans))) + (if (-> self callback) + ((-> self callback) self) + ) + (spawn (-> self part) gp-1) ) - ) + (suspend) ) - ) - (let ((gp-1 (-> self root trans))) - (if (-> self callback) - ((-> self callback) self) + (let ((gp-2 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-2) (the-as int (-> self linger-duration))) + (if (-> self linger-callback) + ((-> self linger-callback) self) + ) + (suspend) + ) ) - (spawn (-> self part) gp-1) - ) + (if (-> self linger-callback) + ((-> self linger-callback) self) + ) + (part-tracker-notify) (suspend) + 0 + (none) ) - (let ((gp-2 (-> *display* base-frame-counter))) - (until - (>= - (- (-> *display* base-frame-counter) gp-2) - (the-as int (-> self linger-duration)) - ) - (if (-> self linger-callback) - ((-> self linger-callback) self) - ) - (suspend) - ) - ) - (if (-> self linger-callback) - ((-> self linger-callback) self) - ) - (part-tracker-notify) - (suspend) - 0 - (none) - ) ) -(defbehavior - part-tracker-init part-tracker - ((arg0 sparticle-launch-group) - (arg1 int) - (arg2 (function part-tracker none)) - (arg3 (pointer process-drawable)) - (arg4 process) - (arg5 collide-prim-core) - ) +(defbehavior part-tracker-init part-tracker ((arg0 sparticle-launch-group) + (arg1 int) + (arg2 (function part-tracker none)) + (arg3 (pointer process-drawable)) + (arg4 process) + (arg5 collide-prim-core) + ) (stack-size-set! (-> self main-thread) 128) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg5 world-sphere quad)) @@ -908,15 +691,15 @@ (set! (-> self userdata) (the-as uint arg3)) (set! (-> self target) (process->handle arg4)) (set! arg1 (cond - ((> arg1 0) - (empty) - arg1 + ((> arg1 0) + (empty) + arg1 + ) + (else + (the-as int (-> arg0 duration)) + ) ) - (else - (the-as int (-> arg0 duration)) - ) - ) - ) + ) (set! (-> self duration) (the-as uint arg1)) (set! (-> self linger-duration) (-> arg0 linger-duration)) (set! (-> self part) (create-launch-control arg0 self)) @@ -928,254 +711,201 @@ ;; WARN: disable def twice: 82. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 96. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 110. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. -;; (defbehavior -;; command-get-process camera-tracker -;; ((arg0 object) (arg1 process-drawable)) -;; (the-as process (cond -;; ((null? arg0) -;; (empty) -;; arg1 -;; ) -;; ((type-type? (rtype-of arg0) process) -;; (the-as process-drawable arg0) -;; ) -;; ((= arg0 'target) -;; *target* -;; ) -;; ((= arg0 'sidekick) -;; (when *target* -;; (let ((v1-6 (-> *target* sidekick))) -;; (if v1-6 -;; (the-as process-drawable (-> v1-6 0 self)) -;; ) -;; ) -;; ) -;; ) -;; ((= arg0 'parent) -;; (let ((v1-9 (-> self parent))) -;; (if v1-9 -;; (the-as process-drawable (-> v1-9 0 self)) -;; ) -;; ) -;; ) -;; ((= arg0 'camera) -;; (the-as process-drawable *camera*) -;; ) -;; ((type-type? (rtype-of arg0) string) -;; (the-as -;; process-drawable -;; (process-by-ename (the-as string arg0)) -;; ) -;; ) -;; ((type-type? (-> self type) camera-tracker) -;; (let ((v1-13 self)) -;; (cond -;; ((= arg0 'work) -;; (let ((v1-14 (-> v1-13 work-process))) -;; (and -;; (nonzero? (l32-false-check v1-14)) -;; (let ((a0-8 (-> v1-14 process 0))) -;; (if (= (-> v1-14 pid) (-> a0-8 pid)) -;; (the-as process-drawable a0-8) -;; ) -;; ) -;; ) -;; ) -;; ) -;; ((= arg0 'grab) -;; (let ((v1-17 (-> v1-13 grab-target))) -;; (and -;; (nonzero? (l32-false-check v1-17)) -;; (let ((a0-12 (-> v1-17 process 0))) -;; (if (= (-> v1-17 pid) (-> a0-12 pid)) -;; (the-as process-drawable a0-12) -;; ) -;; ) -;; ) -;; ) -;; ) -;; ((= arg0 'look-at) -;; (let ((v1-20 (-> v1-13 look-at-target))) -;; (and -;; (nonzero? (l32-false-check v1-20)) -;; (let ((a0-16 (-> v1-20 process 0))) -;; (if (= (-> v1-20 pid) (-> a0-16 pid)) -;; (the-as process-drawable a0-16) -;; ) -;; ) -;; ) -;; ) -;; ) -;; ((= arg0 'pov) -;; (let ((v1-23 (-> v1-13 pov-target))) -;; (and -;; (nonzero? (l32-false-check v1-23)) -;; (let ((a0-20 (-> v1-23 process 0))) -;; (if (= (-> v1-23 pid) (-> a0-20 pid)) -;; (the-as process-drawable a0-20) -;; ) -;; ) -;; ) -;; ) -;; ) -;; ((= arg0 'anim) -;; (let ((v1-26 (-> v1-13 anim-process))) -;; (and -;; (nonzero? (l32-false-check v1-26)) -;; (let ((a0-24 (-> v1-26 process 0))) -;; (if (= (-> v1-26 pid) (-> a0-24 pid)) -;; (the-as process-drawable a0-24) -;; ) -;; ) -;; ) -;; ) -;; ) -;; (else -;; (empty) -;; arg1 -;; ) -;; ) -;; ) -;; ) -;; (else -;; (empty) -;; arg1 -;; ) -;; ) -;; ) -;; ) +(defbehavior command-get-process camera-tracker ((arg0 object) (arg1 process)) + (the-as process (cond + ((null? arg0) + (empty) + arg1 + ) + ((type-type? (rtype-of arg0) process) + (the-as process arg0) + ) + ((= arg0 'target) + *target* + ) + ((= arg0 'sidekick) + (when *target* + (let ((v1-6 (-> *target* sidekick))) + (if v1-6 + (the-as process (-> v1-6 0 self)) + ) + ) + ) + ) + ((= arg0 'parent) + (let ((v1-9 (-> self parent))) + (if v1-9 + (the-as process (-> v1-9 0 self)) + ) + ) + ) + ((= arg0 'camera) + *camera* + ) + ((type-type? (rtype-of arg0) string) + (process-by-ename (the-as string arg0)) + ) + ((type-type? (-> self type) camera-tracker) + (let ((v1-13 self)) + (cond + ((= arg0 'work) + (handle->process (-> v1-13 work-process)) + ) + ((= arg0 'grab) + (handle->process (-> v1-13 grab-target)) + ) + ((= arg0 'look-at) + (handle->process (-> v1-13 look-at-target)) + ) + ((= arg0 'pov) + (handle->process (-> v1-13 pov-target)) + ) + ((= arg0 'anim) + (handle->process (-> v1-13 anim-process)) + ) + (else + (empty) + arg1 + ) + ) + ) + ) + (else + (empty) + arg1 + ) + ) + ) + ) (defun command-get-camera ((arg0 object) (arg1 state)) (cond - ((null? arg0) - (empty) - arg1 + ((null? arg0) + (empty) + arg1 + ) + ((= arg0 'base) + *camera-base-mode* + ) + ((= arg0 'string) + cam-string + ) + ((= arg0 'fixed) + cam-fixed + ) + ((type-type? (rtype-of arg0) symbol) + (the-as state (-> (the-as symbol arg0) value)) + ) + ((type-type? (rtype-of arg0) string) + (the-as state arg0) + ) + ((type-type? (rtype-of arg0) state) + (the-as state arg0) + ) + (else + (empty) + arg1 + ) ) - ((= arg0 'base) - *camera-base-mode* - ) - ((= arg0 'string) - cam-string - ) - ((= arg0 'fixed) - cam-fixed - ) - ((type-type? (rtype-of arg0) symbol) - (the-as state (-> (the-as symbol arg0) value)) - ) - ((type-type? (rtype-of arg0) string) - (the-as state arg0) - ) - ((type-type? (rtype-of arg0) state) - (the-as state arg0) - ) - (else - (empty) - arg1 - ) - ) ) (defun command-get-trans ((arg0 object) (arg1 vector)) (cond - ((null? arg0) - (empty) - arg1 - ) - ((= arg0 'null) - *null-vector* - ) - ((= arg0 'target) - (target-pos 0) - ) - ((pair? arg0) - (let ((s4-0 (command-get-process (car arg0) *target*)) - (v1-4 (command-get-int (car (cdr arg0)) 0)) - ) - (cond - (s4-0 - (-> (the-as target s4-0) node-list data v1-4 bone transform vector 3) - ) - (else - (empty) - arg1 - ) - ) + ((null? arg0) + (empty) + arg1 ) + ((= arg0 'null) + *null-vector* + ) + ((= arg0 'target) + (target-pos 0) + ) + ((pair? arg0) + (let ((s4-0 (command-get-process (car arg0) *target*)) + (v1-4 (command-get-int (car (cdr arg0)) 0)) + ) + (cond + (s4-0 + (-> (the-as target s4-0) node-list data v1-4 bone transform vector 3) + ) + (else + (empty) + arg1 + ) + ) + ) + ) + (else + (empty) + arg1 + ) ) - (else - (empty) - arg1 - ) - ) ) (defbehavior process-grab? process ((arg0 process)) (let ((gp-0 (command-get-process arg0 *target*))) - (the-as symbol (when gp-0 - (if (type-type? (-> self type) camera-tracker) - (set! - (-> (the-as camera-tracker self) grab-target) - (process->handle gp-0) + (the-as symbol (when gp-0 + (if (type-type? (-> self type) camera-tracker) + (set! (-> (the-as camera-tracker self) grab-target) (process->handle gp-0)) + ) + (send-event gp-0 'change-mode 'grab) ) - ) - (send-event gp-0 'change-mode 'grab) - ) + ) ) - ) ) (defbehavior process-release? process ((arg0 process)) (let ((gp-0 (command-get-process arg0 *target*))) - (the-as - symbol - (if (and gp-0 (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 1) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'mode)) - (send-event-function gp-0 a1-1) - ) - 'target-grab - ) - (send-event gp-0 'end-mode) - #t - ) + (the-as symbol (if (and + gp-0 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'mode)) + (send-event-function gp-0 a1-1) + ) + 'target-grab + ) + (send-event gp-0 'end-mode) + #t + ) + ) ) - ) ) (defun camera-change-to ((arg0 string) (arg1 int) (arg2 symbol)) (let ((gp-0 (command-get-camera arg0 *camera-base-mode*))) - (cond - ((not gp-0) - #f - ) - ((type-type? (rtype-of gp-0) string) - (send-event *camera* 'change-to-entity-by-name gp-0) - #t - ) - ((type-type? (rtype-of gp-0) state) - (send-event *camera* 'change-state gp-0 arg1) - (if arg2 - (send-event *camera* 'blend-from-as-fixed) + (cond + ((not gp-0) + #f + ) + ((type-type? (rtype-of gp-0) string) + (send-event *camera* 'change-to-entity-by-name gp-0) + #t + ) + ((type-type? (rtype-of gp-0) state) + (send-event *camera* 'change-state gp-0 arg1) + (if arg2 + (send-event *camera* 'blend-from-as-fixed) + ) + #t + ) ) - #t - ) ) - ) ) (defbehavior camera-look-at camera-tracker ((arg0 pair) (arg1 uint)) (let ((gp-0 (command-get-process arg0 *target*))) - (when gp-0 - (if (type-type? (-> self type) camera-tracker) - (set! (-> self look-at-target) (process->handle gp-0)) - ) - (send-event *camera* 'change-target gp-0 arg1) + (when gp-0 + (if (type-type? (-> self type) camera-tracker) + (set! (-> self look-at-target) (process->handle gp-0)) + ) + (send-event *camera* 'change-target gp-0 arg1) + ) + gp-0 ) - gp-0 - ) ) ;; TODO modified! @@ -1211,401 +941,296 @@ (defbehavior camera-pov-from camera-tracker ((arg0 pair) (arg1 uint)) (let ((gp-0 (command-get-process arg0 *target*))) - (when gp-0 - (if (type-type? (-> self type) camera-tracker) - (set! (-> self pov-target) (process->handle gp-0)) - ) - (when (= arg1 -10) - (set! arg1 (the-as uint 0)) - (when (> (-> (the-as process-drawable gp-0) skel active-channels) 0) - (let - ((v1-11 - (dummy-10 - (-> (the-as process-drawable gp-0) draw jgeo) - "camera" - (the-as type #f) + (when gp-0 + (if (type-type? (-> self type) camera-tracker) + (set! (-> self pov-target) (process->handle gp-0)) + ) + (when (= arg1 -10) + (set! arg1 (the-as uint 0)) + (when (> (-> (the-as process-drawable gp-0) skel active-channels) 0) + (let ((v1-11 (dummy-10 (-> (the-as process-drawable gp-0) draw jgeo) "camera" (the-as type #f)))) + (if v1-11 + (set! arg1 (the-as uint (+ (-> v1-11 number) 1))) + ) + ) ) - ) ) - (if v1-11 - (set! arg1 (the-as uint (+ (-> v1-11 number) 1))) - ) - ) + (send-event *camera* 'change-pov gp-0 arg1) ) - ) - (send-event *camera* 'change-pov gp-0 arg1) + gp-0 ) - gp-0 - ) ) -(defbehavior - camera-anim camera-tracker - ((arg0 symbol) (arg1 basic) (arg2 entity)) +(defbehavior camera-anim camera-tracker ((arg0 symbol) (arg1 basic) (arg2 entity)) (set! (-> self anim-process) (the-as handle #f)) (let* ((s2-0 (get-process *default-dead-pool* manipy #x4000)) (gp-0 (when s2-0 - (let ((t9-1 (method-of-type manipy activate))) - (t9-1 - (the-as manipy s2-0) - self - 'manipy - (the-as pointer #x70004000) + (let ((t9-1 (method-of-type manipy activate))) + (t9-1 (the-as manipy s2-0) self 'manipy (the-as pointer #x70004000)) + ) + ((the-as (function process function object object object object object) run-function-in-process) + s2-0 + manipy-init + arg2 + #f + arg0 + #f ) + (-> s2-0 ppointer) ) - ((the-as - (function process function object object object object object) - run-function-in-process - ) - s2-0 - manipy-init - arg2 - #f - arg0 - #f - ) - (-> s2-0 ppointer) - ) - ) + ) ) - (when gp-0 - (send-event (-> gp-0 0 self) 'anim-mode 'play1) - (send-event (-> gp-0 0 self) 'art-joint-anim arg1) - (set! (-> self anim-process) (ppointer->handle gp-0)) + (when gp-0 + (send-event (-> gp-0 0 self) 'anim-mode 'play1) + (send-event (-> gp-0 0 self) 'art-joint-anim arg1) + (set! (-> self anim-process) (ppointer->handle gp-0)) + ) + gp-0 ) - gp-0 - ) ) (defmethod dummy-14 camera-tracker ((obj camera-tracker) (arg0 pair)) (with-pp - (let ((gp-0 (the-as object #f))) - (cond - ((null? arg0) - ) - ((pair? arg0) - (let ((a2-0 (car arg0)) - (s4-0 (cdr arg0)) - ) - (case a2-0 - (('print) - (set! gp-0 (car s4-0)) - (if (pair? gp-0) - (set! gp-0 (dummy-14 obj (the-as pair gp-0))) - ) - (format - #t - "~A MESSAGE (~D): ~A~%" - obj - (-> *display* base-frame-counter) - gp-0 - ) - ) - (('while) - (let ((s3-0 (car s4-0))) - (while (dummy-14 obj (the-as pair s3-0)) - (let* ((s2-0 (cdr s4-0)) - (a1-3 (car s2-0)) + (let ((gp-0 (the-as object #f))) + (cond + ((null? arg0) + ) + ((pair? arg0) + (let ((a2-0 (car arg0)) + (s4-0 (cdr arg0)) + ) + (case a2-0 + (('print) + (set! gp-0 (car s4-0)) + (if (pair? gp-0) + (set! gp-0 (dummy-14 obj (the-as pair gp-0))) ) - (while (not (null? s2-0)) - (set! gp-0 (dummy-14 obj (the-as pair a1-3))) - (set! s2-0 (cdr s2-0)) - (set! a1-3 (car s2-0)) - ) - ) - ) - ) - ) - (('until) - (let ((s3-1 (car s4-0))) - (while (not (dummy-14 obj (the-as pair s3-1))) - (let* ((s2-1 (cdr s4-0)) - (a1-5 (car s2-1)) + (format #t "~A MESSAGE (~D): ~A~%" obj (-> *display* base-frame-counter) gp-0) + ) + (('while) + (let ((s3-0 (car s4-0))) + (while (dummy-14 obj (the-as pair s3-0)) + (let* ((s2-0 (cdr s4-0)) (a1-3 (car s2-0))) (while (not (null? s2-0)) + (set! gp-0 (dummy-14 obj (the-as pair a1-3))) + (set! s2-0 (cdr s2-0)) + (set! a1-3 (car s2-0)) + ) + ) ) - (while (not (null? s2-1)) - (set! gp-0 (dummy-14 obj (the-as pair a1-5))) - (set! s2-1 (cdr s2-1)) - (set! a1-5 (car s2-1)) - ) - ) - ) - ) - ) - (('not) - (set! gp-0 (not (dummy-14 obj (the-as pair (car s4-0))))) - ) - (('wait-for 'wait 'suspend) - (let ((s5-1 (command-get-time (car s4-0) 1)) - (s4-1 (-> *display* base-frame-counter)) - ) - (until (>= (- (-> *display* base-frame-counter) s4-1) s5-1) - (suspend) - ) - ) - ) - (('message?) - (when (= (-> obj message) (car s4-0)) - (set! gp-0 (-> obj message)) - (set! (-> obj message) #f) - ) - ) - (('send-event) - (let ((s5-2 (command-get-process (car s4-0) *target*)) - (s3-2 (car (cdr s4-0))) - (s4-2 (cdr (cdr s4-0))) - ) - (when (and s5-2 (not (null? s3-2))) - (let ((gp-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-1 from) pp) - (let ((a0-22 s4-2)) - (set! - (-> gp-1 num-params) - ((method-of-type (rtype-of a0-22) length) a0-22) + ) ) - ) - (set! (-> gp-1 message) (the-as symbol s3-2)) - (set! - (-> gp-1 param 0) - (the-as uint (command-get-param (car s4-2) #f)) - ) - (set! - (-> gp-1 param 1) - (the-as uint (command-get-param (car (cdr s4-2)) #f)) - ) - (set! - (-> gp-1 param 2) - (the-as uint (command-get-param (car (cdr (cdr s4-2))) #f)) - ) - (set! gp-0 (send-event-function s5-2 gp-1)) - ) - ) - ) - ) - (('eval) - (let ((s4-3 (car s4-0))) - (if (and s4-3 (type-type? (-> (the-as basic s4-3) type) function)) - (set! gp-0 ((the-as (function camera-tracker symbol) s4-3) obj)) - ) - ) - ) - (('work-set!) - (set! gp-0 (process->handle (dummy-14 obj (the-as pair (car s4-0))))) - (set! (-> obj work-process) (the-as handle gp-0)) - ) - (('grab) - (let ((a0-38 (command-get-process (car s4-0) *target*))) - (set! gp-0 (process-grab? a0-38)) - ) - ) - (('release) - (set! gp-0 (process-release? (handle->process (-> obj grab-target)))) - ) - (('alive?) - (set! gp-0 (command-get-process (car s4-0) *target*)) - ) - (('draw) - (set! gp-0 (command-get-process (car s4-0) *target*)) - (when (the-as target gp-0) - (if (car (cdr s4-0)) - (set! - (-> (the-as target gp-0) skel status) - (logand -3 (-> (the-as target gp-0) skel status)) - ) - (logior! (-> (the-as target gp-0) skel status) 2) - ) - ) - ) - (('camera-change-to 'camera) - (set! - gp-0 - (camera-change-to - (the-as string (car s4-0)) - (command-get-time (car (cdr s4-0)) 0) - #f - ) - ) - ) - (('intro-done?) - (let ((a1-25 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-25 from) pp) - (set! (-> a1-25 num-params) 0) - (set! (-> a1-25 message) 'intro-done?) - (set! gp-0 (send-event-function *camera* a1-25)) - ) - ) - (('camera-look-at 'look-at) - (set! - gp-0 - (camera-look-at - (the-as pair (car s4-0)) - (the-as uint (command-get-int (car (cdr s4-0)) 0)) - ) - ) - ) - (('pov) - (set! - gp-0 - (camera-pov-from - (the-as pair (car s4-0)) - (the-as uint (command-get-int (car (cdr s4-0)) 0)) - ) - ) - ) - (('camera-anim) - (let ((s2-2 (car s4-0)) - (s3-3 (car (cdr s4-0))) - (s4-4 (command-get-trans (car (cdr (cdr s4-0))) *null-vector*)) - (s1-0 string->symbol) - ) - (format (clear *temp-string*) "*~S-sg*" s2-2) - (let ((s2-3 (-> (s1-0 *temp-string*) value))) - (when (type-type? (rtype-of s2-3) skeleton-group) - (set! (-> obj anim-process) (the-as handle #f)) - (let ((s1-1 (get-process *default-dead-pool* manipy #x4000))) - (set! gp-0 (when s1-1 - (let ((t9-35 (method-of-type manipy activate))) - (t9-35 - (the-as manipy s1-1) - obj - 'manipy - (the-as pointer #x70004000) - ) - ) - (run-now-in-process s1-1 manipy-init s4-4 #f s2-3 #f) - (-> s1-1 ppointer) - ) + (('until) + (let ((s3-1 (car s4-0))) + (while (not (dummy-14 obj (the-as pair s3-1))) + (let* ((s2-1 (cdr s4-0)) (a1-5 (car s2-1))) (while (not (null? s2-1)) + (set! gp-0 (dummy-14 obj (the-as pair a1-5))) + (set! s2-1 (cdr s2-1)) + (set! a1-5 (car s2-1)) + ) + ) + ) + ) ) + (('not) + (set! gp-0 (not (dummy-14 obj (the-as pair (car s4-0))))) + ) + (('wait-for 'wait 'suspend) + (let ((s5-1 (command-get-time (car s4-0) 1)) + (s4-1 (-> *display* base-frame-counter)) + ) + (until (>= (- (-> *display* base-frame-counter) s4-1) s5-1) + (suspend) + ) + ) + ) + (('message?) + (when (= (-> obj message) (car s4-0)) + (set! gp-0 (-> obj message)) + (set! (-> obj message) #f) + ) + ) + (('send-event) + (let ((s5-2 (command-get-process (car s4-0) *target*)) + (s3-2 (car (cdr s4-0))) + (s4-2 (cdr (cdr s4-0))) + ) + (when (and s5-2 (not (null? s3-2))) + (let ((gp-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-1 from) pp) + (let ((a0-22 s4-2)) + (set! (-> gp-1 num-params) ((method-of-type (rtype-of a0-22) length) a0-22)) + ) + (set! (-> gp-1 message) (the-as symbol s3-2)) + (set! (-> gp-1 param 0) (the-as uint (command-get-param (car s4-2) #f))) + (set! (-> gp-1 param 1) (the-as uint (command-get-param (car (cdr s4-2)) #f))) + (set! (-> gp-1 param 2) (the-as uint (command-get-param (car (cdr (cdr s4-2))) #f))) + (set! gp-0 (send-event-function s5-2 gp-1)) + ) + ) + ) + ) + (('eval) + (let ((s4-3 (car s4-0))) + (if (and s4-3 (type-type? (-> (the-as basic s4-3) type) function)) + (set! gp-0 ((the-as (function camera-tracker symbol) s4-3) obj)) + ) + ) + ) + (('work-set!) + (set! gp-0 (process->handle (dummy-14 obj (the-as pair (car s4-0))))) + (set! (-> obj work-process) (the-as handle gp-0)) + ) + (('grab) + (let ((a0-38 (command-get-process (car s4-0) *target*))) + (set! gp-0 (process-grab? a0-38)) + ) + ) + (('release) + (set! gp-0 (process-release? (handle->process (-> obj grab-target)))) + ) + (('alive?) + (set! gp-0 (command-get-process (car s4-0) *target*)) + ) + (('draw) + (set! gp-0 (command-get-process (car s4-0) *target*)) + (when (the-as target gp-0) + (if (car (cdr s4-0)) + (set! (-> (the-as target gp-0) skel status) (logand -3 (-> (the-as target gp-0) skel status))) + (logior! (-> (the-as target gp-0) skel status) 2) + ) + ) + ) + (('camera-change-to 'camera) + (set! gp-0 (camera-change-to (the-as string (car s4-0)) (command-get-time (car (cdr s4-0)) 0) #f)) + ) + (('intro-done?) + (let ((a1-25 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-25 from) pp) + (set! (-> a1-25 num-params) 0) + (set! (-> a1-25 message) 'intro-done?) + (set! gp-0 (send-event-function *camera* a1-25)) + ) + ) + (('camera-look-at 'look-at) + (set! gp-0 (camera-look-at (the-as pair (car s4-0)) (the-as uint (command-get-int (car (cdr s4-0)) 0)))) + ) + (('pov) + (set! gp-0 (camera-pov-from (the-as pair (car s4-0)) (the-as uint (command-get-int (car (cdr s4-0)) 0)))) + ) + (('camera-anim) + (let ((s2-2 (car s4-0)) + (s3-3 (car (cdr s4-0))) + (s4-4 (command-get-trans (car (cdr (cdr s4-0))) *null-vector*)) + (s1-0 string->symbol) + ) + (format (clear *temp-string*) "*~S-sg*" s2-2) + (let ((s2-3 (-> (s1-0 *temp-string*) value))) + (when (type-type? (rtype-of s2-3) skeleton-group) + (set! (-> obj anim-process) (the-as handle #f)) + (let ((s1-1 (get-process *default-dead-pool* manipy #x4000))) + (set! gp-0 (when s1-1 + (let ((t9-35 (method-of-type manipy activate))) + (t9-35 (the-as manipy s1-1) obj 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s1-1 manipy-init s4-4 #f s2-3 #f) + (-> s1-1 ppointer) + ) + ) + ) + (send-event (-> (the-as (pointer process) gp-0) 0 self) 'anim-mode 'play1) + (send-event (-> (the-as (pointer process) gp-0) 0 self) 'art-joint-anim s3-3) + (set! (-> obj anim-process) (ppointer->handle (the-as (pointer process) gp-0))) + ) + ) + ) + ) + (else + (format 0 "ERROR: camera-tracker does not know script line command ~A.~%" a2-0) + ) ) - (send-event - (-> (the-as (pointer process) gp-0) 0 self) - 'anim-mode - 'play1 - ) - (send-event - (-> (the-as (pointer process) gp-0) 0 self) - 'art-joint-anim - s3-3 - ) - (set! - (-> obj anim-process) - (ppointer->handle (the-as (pointer process) gp-0)) - ) - ) ) - ) ) (else - (format - 0 - "ERROR: camera-tracker does not know script line command ~A.~%" - a2-0 + (format 0 "ERROR: camera-tracker requires a pair as a script line, not ~A.~%" arg0) ) - ) ) - ) + (the-as process gp-0) ) - (else - (format - 0 - "ERROR: camera-tracker requires a pair as a script line, not ~A.~%" - arg0 - ) - ) - ) - (the-as process gp-0) ) - ) ) (defstate camera-tracker-process (camera-tracker) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-0 uint)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'message) - (set! v0-0 (-> arg3 param 0)) - (set! (-> self message) (the-as basic v0-0)) - v0-0 - ) - ((= v1-0 'mask) - (set! v0-0 (-> arg3 param 0)) - (set! (-> self mask-to-clear) v0-0) - v0-0 - ) - ((= v1-0 'border) - (set! v0-0 (-> arg3 param 0)) - (set! (-> self border-value) (the-as basic v0-0)) - v0-0 - ) - ) - ) + (local-vars (v0-0 uint)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'message) + (set! v0-0 (-> arg3 param 0)) + (set! (-> self message) (the-as basic v0-0)) + v0-0 + ) + ((= v1-0 'mask) + (set! v0-0 (-> arg3 param 0)) + (set! (-> self mask-to-clear) v0-0) + v0-0 + ) + ((= v1-0 'border) + (set! v0-0 (-> arg3 param 0)) + (set! (-> self border-value) (the-as basic v0-0)) + v0-0 + ) + ) + ) + ) ) - ) :enter (behavior () - (if (-> self entity-override) - (dummy-30 (-> self entity-override) (entity-perm-status bit-3) #t) + (if (-> self entity-override) + (dummy-30 (-> self entity-override) (entity-perm-status bit-3) #t) + ) + (if (not (-> self border-value)) + (push-setting! *setting-control* self 'border-mode (-> self border-value) 0.0 0) + ) + (push-setting! *setting-control* self 'process-mask 'set 0.0 (-> self mask-to-clear)) + (push-setting! *setting-control* self 'movie (process->ppointer self) 0.0 0) + (hide-hud-quick) + (none) ) - (if (not (-> self border-value)) - (push-setting! - *setting-control* - self - 'border-mode - (-> self border-value) - 0.0 - 0 - ) - ) - (push-setting! - *setting-control* - self - 'process-mask - 'set - 0.0 - (-> self mask-to-clear) - ) - (push-setting! *setting-control* self 'movie (process->ppointer self) 0.0 0) - (hide-hud-quick) - (none) - ) :exit (behavior () - (if (-> self entity-override) - (dummy-30 (-> self entity-override) (entity-perm-status bit-3) #f) + (if (-> self entity-override) + (dummy-30 (-> self entity-override) (entity-perm-status bit-3) #f) + ) + (send-event *camera* 'clear-entity) + (none) ) - (send-event *camera* 'clear-entity) - (none) - ) :code (behavior () - (cond - ((-> self script-func) - ((-> self script-func)) - ) - (else - (while (not (null? (-> self script-line))) - (dummy-14 self (the-as pair (-> self script-line car))) - (set! (-> self script-line) (the-as pair (-> self script-line cdr))) + (cond + ((-> self script-func) + ((-> self script-func)) + ) + (else + (while (not (null? (-> self script-line))) + (dummy-14 self (the-as pair (-> self script-line car))) + (set! (-> self script-line) (the-as pair (-> self script-line cdr))) + ) + ) ) - ) + (clear-pending-settings-from-process *setting-control* self 'process-mask) + (send-event *camera* 'clear-entity) + (suspend) + (suspend) + (suspend) + 0 + (none) ) - (clear-pending-settings-from-process *setting-control* self 'process-mask) - (send-event *camera* 'clear-entity) - (suspend) - (suspend) - (suspend) - 0 - (none) - ) ) (defbehavior camera-tracker-init camera-tracker ((arg0 object)) (stack-size-set! (-> self main-thread) 512) - (logclear! - (-> self mask) - (process-mask actor-pause movie enemy platform projectile) - ) + (logclear! (-> self mask) (process-mask actor-pause movie enemy platform projectile)) (set! (-> self mask-to-clear) (the-as uint #x4a0800)) (set! (-> self grab-target) (the-as handle #f)) (set! (-> self grab-event) 'grab) @@ -1621,34 +1246,27 @@ (set! (-> self message) #f) (set! (-> self border-value) #f) (cond - ((pair? arg0) - (set! (-> self script) (the-as pair arg0)) - (set! (-> self script-line) (the-as pair arg0)) - ) - ((type-type? (rtype-of arg0) function) - (set! (-> self script-func) (the-as (function none) arg0)) - ) - (else - (format - 0 - "ERROR: camera-tracker requires a pair as a script, not ~A.~%" - arg0 + ((pair? arg0) + (set! (-> self script) (the-as pair arg0)) + (set! (-> self script-line) (the-as pair arg0)) ) + ((type-type? (rtype-of arg0) function) + (set! (-> self script-func) (the-as (function none) arg0)) + ) + (else + (format 0 "ERROR: camera-tracker requires a pair as a script, not ~A.~%" arg0) + ) ) - ) (let* ((gp-1 (ppointer->process (-> self parent))) (v1-17 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process)) - gp-1 - ) - ) + gp-1 + ) + ) ) - (if v1-17 - (set! - (-> self entity-override) - (the-as entity-actor (-> (the-as process v1-17) entity)) - ) + (if v1-17 + (set! (-> self entity-override) (the-as entity-actor (-> (the-as process v1-17) entity))) + ) ) - ) (set! (-> self event-hook) (-> camera-tracker-process event)) (go camera-tracker-process) ) @@ -1668,156 +1286,130 @@ (defstate med-res-level-idle (med-res-level) :code (behavior () - (local-vars (v1-37 float)) - (rlet ((vf0 :class vf) - (vf16 :class vf) - (vf17 :class vf) - ) - (init-vf0-vector) - (while #t - (let ((a0-1 (level-get *level* (-> self level))) - (v1-3 (-> *game-info* current-continue level)) + (local-vars (v1-37 float)) + (rlet ((vf0 :class vf) + (vf16 :class vf) + (vf17 :class vf) ) - (cond - ((and - a0-1 - (or - (= (-> a0-1 display?) 'special) - (= (-> a0-1 display?) 'special-vis) - ) - ) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (when (nonzero? (-> self skel)) - (let ((a0-5 (-> self skel root-channel 0))) - (set! (-> a0-5 param 0) 1.0) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - ) - ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) - (logior! (-> self draw status) 2) - ) - ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) - (logior! (-> self draw status) 2) - ) - (else - (set! (-> self draw status) (logand -3 (-> self draw status))) - (if (nonzero? (-> self part)) - (spawn (-> self part) (-> self root trans)) - ) - (when (nonzero? (-> self skel)) - (let ((a0-17 (-> self skel root-channel 0))) - (set! (-> a0-17 param 0) 1.0) - (joint-control-channel-group-eval! - a0-17 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - ) - ) - ) - (when (zero? (logand (-> self draw status) 2)) - (let ((v1-36 (-> self draw)) - (a0-18 (new 'stack-no-clear 'vector)) + (init-vf0-vector) + (while #t + (let ((a0-1 (level-get *level* (-> self level))) + (v1-3 (-> *game-info* current-continue level)) + ) + (cond + ((and a0-1 (or (= (-> a0-1 display?) 'special) (= (-> a0-1 display?) 'special-vis))) + (logclear! (-> self draw status) (draw-status drwf01)) + (when (nonzero? (-> self skel)) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) 1.0) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + ) + ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) + (logior! (-> self draw status) (draw-status drwf01)) + ) + ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) + (logior! (-> self draw status) (draw-status drwf01)) + ) + (else + (logclear! (-> self draw status) (draw-status drwf01)) + (if (nonzero? (-> self part)) + (spawn (-> self part) (-> self root trans)) + ) + (when (nonzero? (-> self skel)) + (let ((a0-17 (-> self skel root-channel 0))) + (set! (-> a0-17 param 0) 1.0) + (joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + ) ) - (.lvf vf16 (&-> v1-36 origin quad)) - (.lvf vf17 (&-> v1-36 bounds quad)) - (.mul.x.vf vf16 vf16 vf0 :mask #b1000) - (.add.vf vf16 vf16 vf17) - (.svf (&-> a0-18 quad) vf16) - ) - (.mov v1-37 vf16) + ) + (when (zero? (logand (-> self draw status) (draw-status drwf01))) + (let ((v1-36 (-> self draw)) + (a0-18 (new 'stack-no-clear 'vector)) + ) + (.lvf vf16 (&-> v1-36 origin quad)) + (.lvf vf17 (&-> v1-36 bounds quad)) + (.mul.x.vf vf16 vf16 vf0 :mask #b1000) + (.add.vf vf16 vf16 vf17) + (.svf (&-> a0-18 quad) vf16) + ) + (.mov v1-37 vf16) + ) + (suspend) + ) + (none) ) - (suspend) - ) - (none) ) - ) :post (the-as (function none :behavior med-res-level) ja-post) ) (define *lev-string* (new 'global 'string 64 (the-as string #f))) -(defmethod - init-from-entity! - med-res-level - ((obj med-res-level) (arg0 entity-actor)) +(defmethod init-from-entity! med-res-level ((obj med-res-level) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (stack-size-set! (-> obj main-thread) 128) "#f" (let ((s4-0 (the-as (pointer sparticle-launch-group) #f))) - (set! sv-16 (new 'static 'res-tag)) - (let* - ((s3-0 - (res-lump-data - arg0 - 'art-name - (pointer (pointer sparticle-launch-group)) - :tag-ptr - (& sv-16) - ) + (set! sv-16 (new 'static 'res-tag)) + (let* ((s3-0 (res-lump-data arg0 'art-name (pointer (pointer sparticle-launch-group)) :tag-ptr (& sv-16))) + (s2-0 (-> s3-0 0)) + ) + (cond + ((not s3-0) + ) + ((part-group-pointer? s2-0) + (set! s4-0 (-> s3-0 0)) + ) + ((= (-> s2-0 -1) string) + (set! s4-0 (lookup-part-group-pointer-by-name (the-as string s2-0))) + (if s4-0 + (set! (-> s3-0 0) s4-0) + ) + ) + ((= (-> s2-0 -1) symbol) + (let ((a0-7 (-> (&+ s2-0 #xff38) 0))) + (set! s4-0 (lookup-part-group-pointer-by-name (the-as string a0-7))) + ) + (if s4-0 + (set! (-> s3-0 0) s4-0) + ) + ) + ) ) - (s2-0 (-> s3-0 0)) - ) - (cond - ((not s3-0) + (when s4-0 + (let ((a0-8 (-> s4-0 0))) + (if (and (nonzero? a0-8) (= (-> a0-8 type) sparticle-launch-group)) + (set! (-> obj part) (create-launch-control a0-8 obj)) + ) + ) ) - ((part-group-pointer? s2-0) - (set! s4-0 (-> s3-0 0)) - ) - ((= (-> s2-0 -1) string) - (set! s4-0 (lookup-part-group-pointer-by-name (the-as string s2-0))) - (if s4-0 - (set! (-> s3-0 0) s4-0) - ) - ) - ((= (-> s2-0 -1) symbol) - (let ((a0-7 (-> (&+ s2-0 #xff38) 0))) - (set! s4-0 (lookup-part-group-pointer-by-name (the-as string a0-7))) - ) - (if s4-0 - (set! (-> s3-0 0) s4-0) - ) - ) - ) ) - (when s4-0 - (let ((a0-8 (-> s4-0 0))) - (if (and (nonzero? a0-8) (= (-> a0-8 type) sparticle-launch-group)) - (set! (-> obj part) (create-launch-control a0-8 obj)) - ) - ) - ) - ) (process-entity-status! obj (entity-perm-status bit-7) #t) (let ((s4-1 (res-lump-struct (-> obj entity) 'level structure)) (s3-1 (res-lump-value (-> obj entity) 'index uint128)) ) - (when s4-1 - (set! (-> obj level) (the-as symbol s4-1)) - (set! (-> obj index) (the-as int s3-1)) - (set! (-> obj root) (new 'process 'trsqv)) - (process-drawable-from-entity! obj arg0) - (logclear! (-> obj mask) (process-mask actor-pause)) - (format (clear *lev-string*) "med-res-~S~S" s4-1 (if (zero? s3-1) - "" - (* s3-1 8) - ) - ) - (dummy-15 obj *lev-string* '()) - (logior! (-> obj draw status) 64) - (if (nonzero? (-> obj draw)) - (go med-res-level-idle) - ) + (when s4-1 + (set! (-> obj level) (the-as symbol s4-1)) + (set! (-> obj index) (the-as int s3-1)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (format (clear *lev-string*) "med-res-~S~S" s4-1 (if (zero? s3-1) + "" + (* s3-1 8) + ) + ) + (dummy-15 obj *lev-string* '()) + (logior! (-> obj draw status) (draw-status drwf06)) + (if (nonzero? (-> obj draw)) + (go med-res-level-idle) + ) + ) ) - ) (none) ) @@ -1830,44 +1422,41 @@ (defstate part-spawner-active (part-spawner) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('stop) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self enable) #f) - #t + (case arg2 + (('stop) + (process-entity-status! self (entity-perm-status complete) #t) + (set! (-> self enable) #f) + #t + ) + (('start) + (process-entity-status! self (entity-perm-status complete) #f) + (set! (-> self enable) #t) + #t + ) + (('trans) + (let ((v0-1 (the-as object (-> (the-as vector (-> arg3 param 0)) quad)))) + (set! (-> self root trans quad) (the-as uint128 v0-1)) + v0-1 + ) + ) ) - (('start) - (process-entity-status! self (entity-perm-status complete) #f) - (set! (-> self enable) #t) - #t - ) - (('trans) - (let ((v0-1 (the-as object (-> (the-as vector (-> arg3 param 0)) quad)))) - (set! (-> self root trans quad) (the-as uint128 v0-1)) - v0-1 - ) - ) ) - ) :code (behavior () - (while #t - (when (-> self enable) - (spawn (-> self part) (-> self root trans)) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) + (while #t + (when (-> self enable) + (spawn (-> self part) (-> self root trans)) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + ) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) ) -(defmethod - init-from-entity! - part-spawner - ((obj part-spawner) (arg0 entity-actor)) +(defmethod init-from-entity! part-spawner ((obj part-spawner) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (stack-size-set! (-> obj main-thread) 128) (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) @@ -1875,73 +1464,55 @@ (process-drawable-from-entity! obj arg0) (logclear! (-> obj mask) (process-mask actor-pause)) (set! (-> obj radius) 12288.0) - (set! - (-> obj enable) - (not - (and - (-> obj entity) - (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) - ) - ) - ) - (set! - (-> obj sound) - (new 'process 'ambient-sound (-> obj entity) (-> obj root trans)) - ) + (set! (-> obj enable) + (not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))) + ) + (set! (-> obj sound) (new 'process 'ambient-sound (-> obj entity) (-> obj root trans))) (let ((s4-0 (the-as object "#f"))) - (let ((s3-0 (the-as (pointer sparticle-launch-group) #f))) - (set! sv-16 (new 'static 'res-tag)) - (let* - ((s5-1 - (res-lump-data - arg0 - 'art-name - (pointer (pointer sparticle-launch-group)) - :tag-ptr - (& sv-16) + (let ((s3-0 (the-as (pointer sparticle-launch-group) #f))) + (set! sv-16 (new 'static 'res-tag)) + (let* ((s5-1 (res-lump-data arg0 'art-name (pointer (pointer sparticle-launch-group)) :tag-ptr (& sv-16))) + (s2-0 (-> s5-1 0)) + ) + (cond + ((part-group-pointer? s2-0) + (set! s3-0 (-> s5-1 0)) + ) + ((= (-> s2-0 -1) string) + (when (string= (the-as string s2-0) "group-beach-grotto-1") + (set! (-> obj radius) 61440.0) + (go beach-part-grotto-1) + ) + (set! s4-0 s2-0) + (set! s3-0 (lookup-part-group-pointer-by-name (the-as string s4-0))) + (if s3-0 + (set! (-> s5-1 0) s3-0) + ) + ) + ((= (-> s2-0 -1) symbol) + (set! s4-0 (-> (&+ s2-0 #xff38) 0)) + (set! s3-0 (lookup-part-group-pointer-by-name (the-as string s4-0))) + (if s3-0 + (set! (-> s5-1 0) s3-0) + ) + ) + (else + (go process-drawable-art-error (the-as string s2-0)) + ) + ) + ) + (set! (-> obj mode) s3-0) + (when s3-0 + (let ((a0-19 (-> s3-0 0))) + (when (and (nonzero? a0-19) (= (-> a0-19 type) sparticle-launch-group)) + (set! (-> obj part) (create-launch-control a0-19 obj)) + (go part-spawner-active) + ) + ) ) - ) - (s2-0 (-> s5-1 0)) ) - (cond - ((part-group-pointer? s2-0) - (set! s3-0 (-> s5-1 0)) - ) - ((= (-> s2-0 -1) string) - (when (string= (the-as string s2-0) "group-beach-grotto-1") - (set! (-> obj radius) 61440.0) - (go beach-part-grotto-1) - ) - (set! s4-0 s2-0) - (set! s3-0 (lookup-part-group-pointer-by-name (the-as string s4-0))) - (if s3-0 - (set! (-> s5-1 0) s3-0) - ) - ) - ((= (-> s2-0 -1) symbol) - (set! s4-0 (-> (&+ s2-0 #xff38) 0)) - (set! s3-0 (lookup-part-group-pointer-by-name (the-as string s4-0))) - (if s3-0 - (set! (-> s5-1 0) s3-0) - ) - ) - (else - (go process-drawable-art-error (the-as string s2-0)) - ) - ) - ) - (set! (-> obj mode) s3-0) - (when s3-0 - (let ((a0-19 (-> s3-0 0))) - (when (and (nonzero? a0-19) (= (-> a0-19 type) sparticle-launch-group)) - (set! (-> obj part) (create-launch-control a0-19 obj)) - (go part-spawner-active) - ) - ) - ) + (go process-drawable-art-error (the-as string s4-0)) ) - (go process-drawable-art-error (the-as string s4-0)) - ) (none) ) @@ -1961,679 +1532,566 @@ ) -(set! - (-> *part-group-id-table* 37) - (new 'static 'sparticle-launch-group - :length 5 - :duration #xbb8 - :linger-duration #x5dc - :name "group-beach-launcher" - :launcher - (new 'static 'inline-array sparticle-group-item 5 - (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) - (sp-item 46 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 47 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 48 :fade-after (meters 50.0) :falloff-to (meters 80.0)) - (sp-item 49 :fade-after (meters 70.0) :falloff-to (meters 100.0)) - ) - :bounds - (new 'static 'sphere :y 12288.0 :w 20480.0) - ) - ) +(set! (-> *part-group-id-table* 37) + (new 'static 'sparticle-launch-group + :length 5 + :duration #xbb8 + :linger-duration #x5dc + :name "group-beach-launcher" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) + (sp-item 46 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 47 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 48 :fade-after (meters 50.0) :falloff-to (meters 80.0)) + (sp-item 49 :fade-after (meters 70.0) :falloff-to (meters 100.0)) + ) + :bounds + (new 'static 'sphere :y 12288.0 :w 20480.0) + ) + ) -(set! - (-> *part-id-table* 45) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-flt spt-num 1.5) - (sp-flt spt-x (meters 1.5)) - (sp-flt spt-y (meters -0.5)) - (sp-int spt-rot-x 5) - (sp-flt spt-r 4096.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-flt spt-vel-y (meters 0.026666667)) - (sp-int spt-timer 270) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 180) - (sp-launcher-by-id spt-next-launcher 50) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 45) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 1.5) + (sp-flt spt-x (meters 1.5)) + (sp-flt spt-y (meters -0.5)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-flt spt-vel-y (meters 0.026666667)) + (sp-int spt-timer 270) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 180) + (sp-launcher-by-id spt-next-launcher 50) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 50) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-b -4.551111) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 50) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-b -4.551111) (sp-end)) + ) + ) -(set! - (-> *part-id-table* 46) - (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 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.8) 1.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-flt spt-rot-x 16384.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 2.5) (meters 2.5) 1.0) - (sp-rnd-int spt-r 0 1 128.0) - (sp-rnd-flt spt-g 64.0 196.0 1.0) - (sp-rnd-flt spt-b 128.0 128.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.0025)) - (sp-rnd-flt spt-scalevel-y (meters 0.24414062) (meters 0.48828125) 1.0) - (sp-int spt-timer 81) - (sp-cpuinfo-flags bit3) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 46) (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 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.8) 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 2.5) (meters 2.5) 1.0) + (sp-rnd-int spt-r 0 1 128.0) + (sp-rnd-flt spt-g 64.0 196.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-rnd-flt spt-scalevel-y (meters 0.24414062) (meters 0.48828125) 1.0) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 47) - (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 2.0) - (sp-rnd-flt spt-x (meters 1.8) (meters 1.0) 1.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-flt spt-rot-x 16384.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) - (sp-rnd-int spt-r 0 1 128.0) - (sp-rnd-flt spt-g 64.0 196.0 1.0) - (sp-rnd-flt spt-b 128.0 128.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.0025)) - (sp-rnd-flt spt-scalevel-y (meters 0.048828125) (meters 0.09765625) 1.0) - (sp-int spt-timer 81) - (sp-cpuinfo-flags bit3) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 47) (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 2.0) + (sp-rnd-flt spt-x (meters 1.8) (meters 1.0) 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-int spt-r 0 1 128.0) + (sp-rnd-flt spt-g 64.0 196.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-rnd-flt spt-scalevel-y (meters 0.048828125) (meters 0.09765625) 1.0) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 48) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-flt spt-num 1.5) - (sp-rnd-flt spt-x (meters 2.9) (meters 2.5) 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.4) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 0.1) (meters 0.1) 1.0) - (sp-rnd-flt spt-r 10.0 6.0 1.0) - (sp-rnd-flt spt-g 64.0 128.0 1.0) - (sp-rnd-flt spt-b 10.0 6.0 1.0) - (sp-flt spt-a 80.0) - (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.0)) - (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) - (sp-flt spt-fade-a -0.2) - (sp-flt spt-accel-y 6.826667) - (sp-flt spt-friction 0.996) - (sp-int-plain-rnd spt-timer 180 119 1) - (sp-cpuinfo-flags bit2) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 48) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters 2.9) (meters 2.5) 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.4) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.1) (meters 0.1) 1.0) + (sp-rnd-flt spt-r 10.0 6.0 1.0) + (sp-rnd-flt spt-g 64.0 128.0 1.0) + (sp-rnd-flt spt-b 10.0 6.0 1.0) + (sp-flt spt-a 80.0) + (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) + (sp-flt spt-fade-a -0.2) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.996) + (sp-int-plain-rnd spt-timer 180 119 1) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 49) - (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 2.9) (meters 2.5) 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 32.0 32.0 1.0) - (sp-rnd-flt spt-g 32.0 32.0 1.0) - (sp-rnd-flt spt-b 10.0 5.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.0)) - (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) - (sp-flt spt-fade-a 0.6) - (sp-flt spt-accel-y 6.826667) - (sp-flt spt-friction 0.996) - (sp-int spt-timer 270) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 45) - (sp-launcher-by-id spt-next-launcher 51) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 49) (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 2.9) (meters 2.5) 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 10.0 5.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) + (sp-flt spt-fade-a 0.6) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 51) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 51) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.18) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 51) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.18) (sp-end)) + ) + ) -(set! - (-> *part-group-id-table* 38) - (new 'static 'sparticle-launch-group - :length 4 - :duration #xbb8 - :linger-duration #x5dc - :name "group-jungle-launcher" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) - (sp-item 52 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 53 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 54 :fade-after (meters 70.0) :falloff-to (meters 100.0)) - ) - :bounds - (new 'static 'sphere :y 12288.0 :w 20480.0) - ) - ) +(set! (-> *part-group-id-table* 38) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-jungle-launcher" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) + (sp-item 52 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 53 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 54 :fade-after (meters 70.0) :falloff-to (meters 100.0)) + ) + :bounds + (new 'static 'sphere :y 12288.0 :w 20480.0) + ) + ) -(set! - (-> *part-id-table* 52) - (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 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.4) 1.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-flt spt-rot-x 16384.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 2.5) (meters 2.5) 1.0) - (sp-rnd-int spt-r 0 1 128.0) - (sp-rnd-flt spt-g 64.0 196.0 1.0) - (sp-rnd-flt spt-b 128.0 128.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.0025)) - (sp-rnd-flt spt-scalevel-y (meters 0.24414062) (meters 0.48828125) 1.0) - (sp-int spt-timer 81) - (sp-cpuinfo-flags bit3) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 52) (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 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.4) 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 2.5) (meters 2.5) 1.0) + (sp-rnd-int spt-r 0 1 128.0) + (sp-rnd-flt spt-g 64.0 196.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-rnd-flt spt-scalevel-y (meters 0.24414062) (meters 0.48828125) 1.0) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 53) - (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 2.0) - (sp-rnd-flt spt-x (meters 1.4) (meters 0.9) 1.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-flt spt-rot-x 16384.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) - (sp-rnd-int spt-r 0 1 128.0) - (sp-rnd-flt spt-g 64.0 196.0 1.0) - (sp-rnd-flt spt-b 128.0 128.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.0025)) - (sp-rnd-flt spt-scalevel-y (meters 0.048828125) (meters 0.09765625) 1.0) - (sp-int spt-timer 81) - (sp-cpuinfo-flags bit3) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 53) (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 2.0) + (sp-rnd-flt spt-x (meters 1.4) (meters 0.9) 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-int spt-r 0 1 128.0) + (sp-rnd-flt spt-g 64.0 196.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-rnd-flt spt-scalevel-y (meters 0.048828125) (meters 0.09765625) 1.0) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 54) - (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 2.9) (meters 2.5) 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-rnd-flt spt-g 32.0 32.0 1.0) - (sp-rnd-flt spt-b 10.0 5.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.0)) - (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) - (sp-flt spt-fade-a 0.6) - (sp-flt spt-accel-y 6.826667) - (sp-flt spt-friction 0.996) - (sp-int spt-timer 270) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 45) - (sp-launcher-by-id spt-next-launcher 51) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 54) (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 2.9) (meters 2.5) 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 10.0 5.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) + (sp-flt spt-fade-a 0.6) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 51) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 39) - (new 'static 'sparticle-launch-group - :length 4 - :duration #xbb8 - :linger-duration #x5dc - :name "group-swamp-launcher" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) - (sp-item 46 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 47 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) - (sp-item 55 :fade-after (meters 70.0) :falloff-to (meters 100.0)) - ) - :bounds - (new 'static 'sphere :y 12288.0 :w 20480.0) - ) - ) +(set! (-> *part-group-id-table* 39) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-swamp-launcher" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 45 :fade-after (meters 100.0) :falloff-to (meters 100.0)) + (sp-item 46 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 47 :fade-after (meters 70.0) :falloff-to (meters 100.0) :flags (is-3d)) + (sp-item 55 :fade-after (meters 70.0) :falloff-to (meters 100.0)) + ) + :bounds + (new 'static 'sphere :y 12288.0 :w 20480.0) + ) + ) -(set! - (-> *part-id-table* 55) - (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 2.9) (meters 2.5) 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 16.0 16.0 1.0) - (sp-rnd-flt spt-g 16.0 16.0 1.0) - (sp-rnd-flt spt-b 5.0 2.5 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.0)) - (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) - (sp-flt spt-fade-a 0.6) - (sp-flt spt-accel-y 6.826667) - (sp-flt spt-friction 0.996) - (sp-int spt-timer 270) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 45) - (sp-launcher-by-id spt-next-launcher 51) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 55) (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 2.9) (meters 2.5) 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 16.0 16.0 1.0) + (sp-rnd-flt spt-g 16.0 16.0 1.0) + (sp-rnd-flt spt-b 5.0 2.5 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters -0.011666667) (meters -0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668) + (sp-flt spt-fade-a 0.6) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 51) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) (defbehavior cam-launcher-joystick camera-slave () (when *camera-read-analog* - (let ((s5-0 (new-stack-matrix0)) - (gp-0 (vector-reset! (new 'stack-no-clear 'vector))) - ) - (let* - ((f0-0 - (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) - 0.0 - 48.0 - 110.0 - -1.0 + (let ((s5-0 (new-stack-matrix0)) + (gp-0 (vector-reset! (new 'stack-no-clear 'vector))) + ) + (let* ((f0-0 (analog-input (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) + (f1-1 (* -546.13336 f0-0)) + (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) + ) + (matrix-axis-angle! s5-0 (-> *camera* local-down) f0-2) ) - ) - (f1-1 (* -546.13336 f0-0)) - (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) + (vector-! gp-0 (-> self trans) (-> *camera* tpos-curr)) + (vector-matrix*! gp-0 gp-0 s5-0) + (vector+! (-> self trans) gp-0 (-> *camera* tpos-curr)) ) - (matrix-axis-angle! s5-0 (-> *camera* local-down) f0-2) - ) - (vector-! gp-0 (-> self trans) (-> *camera* tpos-curr)) - (vector-matrix*! gp-0 gp-0 s5-0) - (vector+! (-> self trans) gp-0 (-> *camera* tpos-curr)) ) - ) ) (defstate cam-launcher-shortfall (camera-slave) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('teleport) - #f + (case arg2 + (('teleport) + #f + ) + (else + (cam-standard-event-handler arg0 arg1 arg2 arg3) + ) ) - (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) - ) ) - ) :enter (behavior () - (when (not (-> self enter-has-run)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector--float*! - (-> self trans) - (-> *camera* tpos-curr) - (-> *camera* local-down) - 28672.0 + (when (not (-> self enter-has-run)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) 28672.0) + (vector-flatten! gp-0 (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-normalize! gp-0 1.0) + (set! (-> self pivot-pt quad) (-> gp-0 quad)) + (vector+float*! gp-0 gp-0 (-> *camera* local-down) 1000.0) + (vector-normalize-copy! (-> self tracking inv-mat vector 2) gp-0 1.0) + ) + (vector-cross! + (-> self tracking inv-mat vector 1) + (-> self tracking inv-mat vector 2) + (the-as vector (-> self tracking)) + ) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0 ) - (vector-flatten! - gp-0 - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - ) - (vector-normalize! gp-0 1.0) - (set! (-> self pivot-pt quad) (-> gp-0 quad)) - (vector+float*! gp-0 gp-0 (-> *camera* local-down) 1000.0) - (vector-normalize-copy! (-> self tracking inv-mat vector 2) gp-0 1.0) - ) - (vector-cross! - (-> self tracking inv-mat vector 1) - (-> self tracking inv-mat vector 2) - (the-as vector (-> self tracking)) - ) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 + (none) ) - (none) - ) :trans (behavior () - (if (zero? (logand (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) + (if (zero? (logand (-> *camera* master-options) 2)) + (cam-slave-go cam-free-floating) + ) + (none) ) - (none) - ) :code (behavior () - (let ((gp-0 (-> *display* base-frame-counter))) - (while #t - (when (not (paused?)) - (vector--float*! - (-> self trans) - (-> *camera* tpos-curr) - (-> *camera* local-down) - 28672.0 - ) - (send-event *camera* 'teleport) - (if - (and - (-> *camera* on-ground) - (>= (- (-> *display* base-frame-counter) gp-0) 300) + (let ((gp-0 (-> *display* base-frame-counter))) + (while #t + (when (not (paused?)) + (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) 28672.0) + (send-event *camera* 'teleport) + (if (and (-> *camera* on-ground) (>= (- (-> *display* base-frame-counter) gp-0) 300)) + (send-event *camera* 'change-state *camera-base-mode* 150) + ) + ) + (suspend) ) - (send-event *camera* 'change-state *camera-base-mode* 150) - ) ) - (suspend) - ) + (none) ) - (none) - ) ) (defbehavior cam-launcher-long-joystick camera-slave () (when *camera-read-analog* - (let ((gp-0 (new-stack-matrix0))) - (let* - ((f0-0 - (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) - 0.0 - 48.0 - 110.0 - -1.0 + (let ((gp-0 (new-stack-matrix0))) + (let* ((f0-0 (analog-input (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) + (f1-1 (* -546.13336 f0-0)) + (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) + ) + (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-2) ) - ) - (f1-1 (* -546.13336 f0-0)) - (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) + (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0) ) - (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-2) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0) + (vector-normalize! (-> self view-flat) 4096.0) ) - (vector-normalize! (-> self view-flat) 4096.0) - ) ) (defstate cam-launcher-longfall (camera-slave) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('teleport) - #f + (case arg2 + (('teleport) + #f + ) + (else + (cam-standard-event-handler arg0 arg1 arg2 arg3) + ) ) - (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) - ) ) - ) :enter (behavior () - (when (not (-> self enter-has-run)) - (new 'stack-no-clear 'vector) - (vector-negate! (-> self view-flat) (-> self tracking inv-mat vector 2)) - (vector-normalize! (-> self view-flat) 4096.0) - (vector--float*! - (-> self trans) - (-> *camera* tpos-curr) - (-> *camera* local-down) - 28672.0 - ) - (vector+! (-> self trans) (-> self trans) (-> self view-flat)) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - (cam-calc-follow! (-> self tracking) (-> self trans) #f) - (slave-set-rotation! - (-> self tracking) - (-> self trans) - (the-as float (-> self options)) - (-> self fov) - #f - ) + (when (not (-> self enter-has-run)) + (new 'stack-no-clear 'vector) + (vector-negate! (-> self view-flat) (-> self tracking inv-mat vector 2)) + (vector-normalize! (-> self view-flat) 4096.0) + (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) 28672.0) + (vector+! (-> self trans) (-> self trans) (-> self view-flat)) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + (cam-calc-follow! (-> self tracking) (-> self trans) #f) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f) + ) + (none) ) - (none) - ) :trans (behavior () - (if (zero? (logand (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) + (if (zero? (logand (-> *camera* master-options) 2)) + (cam-slave-go cam-free-floating) + ) + (cam-launcher-long-joystick) + (none) ) - (cam-launcher-long-joystick) - (none) - ) :code (behavior () - (let ((gp-0 (-> *display* base-frame-counter))) - (while #t - (when (not (paused?)) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - 0.0 - (send-event *camera* 'teleport) - (let* ((f0-4 (vector-dot (-> self velocity) (-> *camera* local-down))) - (f30-0 (* 0.975 f0-4)) + (let ((gp-0 (-> *display* base-frame-counter))) + (while #t + (when (not (paused?)) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + ) + 0.0 + 0.0 + 0.0 + (send-event *camera* 'teleport) + (let* ((f0-4 (vector-dot (-> self velocity) (-> *camera* local-down))) + (f30-0 (* 0.975 f0-4)) + ) + (vector--float*! s4-0 (-> *camera* tpos-curr) (-> *camera* local-down) 28672.0) + (vector-! s4-0 s4-0 (-> self trans)) + (let ((f28-0 (vector-dot s4-0 (-> *camera* local-down)))) + (vector--float*! s5-0 s4-0 (-> *camera* local-down) f28-0) + (cond + ((< f28-0 f30-0) + (set! f30-0 f28-0) + ) + ((< 20480.0 f28-0) + (let ((f28-1 (+ -20480.0 f28-0))) + (let ((f0-8 (lerp f30-0 f28-1 0.005))) + (if (< f30-0 f0-8) + (set! f30-0 f0-8) + ) + ) + (if (< (* 0.09 f28-1) f30-0) + (set! f30-0 (* 0.09 f28-1)) + ) + ) + ) + ) + ) + (vector+float*! (-> self velocity) s5-0 (-> *camera* local-down) f30-0) ) - (vector--float*! - s4-0 - (-> *camera* tpos-curr) - (-> *camera* local-down) - 28672.0 - ) - (vector-! s4-0 s4-0 (-> self trans)) - (let ((f28-0 (vector-dot s4-0 (-> *camera* local-down)))) - (vector--float*! s5-0 s4-0 (-> *camera* local-down) f28-0) - (cond - ((< f28-0 f30-0) - (set! f30-0 f28-0) - ) - ((< 20480.0 f28-0) - (let ((f28-1 (+ -20480.0 f28-0))) - (let ((f0-8 (lerp f30-0 f28-1 0.005))) - (if (< f30-0 f0-8) - (set! f30-0 f0-8) - ) - ) - (if (< (* 0.09 f28-1) f30-0) - (set! f30-0 (* 0.09 f28-1)) - ) ) - ) + (vector+! (-> self trans) (-> self trans) (-> self velocity)) + (set! (-> self trans x) (-> *camera* tpos-curr x)) + (set! (-> self trans z) (-> *camera* tpos-curr z)) + (vector+! (-> self trans) (-> self trans) (-> self view-flat)) + (if (and (-> *camera* on-ground) (>= (- (-> *display* base-frame-counter) gp-0) 300)) + (send-event *camera* 'change-state *camera-base-mode* 150) + ) ) - ) - (vector+float*! (-> self velocity) s5-0 (-> *camera* local-down) f30-0) + (vector-reset! (-> self tracking follow-off)) + (vector+! (-> self tracking follow-pt) (-> *camera* tpos-curr-adj) (-> self tracking follow-off)) + (vector--float*! + (-> self tracking follow-pt) + (-> self tracking follow-pt) + (-> *camera* local-down) + (-> *camera* target-height) + ) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f) + (suspend) ) - ) - (vector+! (-> self trans) (-> self trans) (-> self velocity)) - (set! (-> self trans x) (-> *camera* tpos-curr x)) - (set! (-> self trans z) (-> *camera* tpos-curr z)) - (vector+! (-> self trans) (-> self trans) (-> self view-flat)) - (if - (and - (-> *camera* on-ground) - (>= (- (-> *display* base-frame-counter) gp-0) 300) - ) - (send-event *camera* 'change-state *camera-base-mode* 150) - ) ) - (vector-reset! (-> self tracking follow-off)) - (vector+! - (-> self tracking follow-pt) - (-> *camera* tpos-curr-adj) - (-> self tracking follow-off) - ) - (vector--float*! - (-> self tracking follow-pt) - (-> self tracking follow-pt) - (-> *camera* local-down) - (-> *camera* target-height) - ) - (slave-set-rotation! - (-> self tracking) - (-> self trans) - (the-as float (-> self options)) - (-> self fov) - #f - ) - (suspend) - ) + (none) ) - (none) - ) ) (defstate launcher-idle (launcher) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('instant-death) - (go launcher-deactivated) + (case arg2 + (('instant-death) + (go launcher-deactivated) + ) + (('trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) + ) ) - (('trans) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) - (dummy-47 (-> self root-override)) - ) ) - ) :trans (behavior () - (when - (and - *target* - (>= - (-> self active-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'powerup)) - (set! (-> a1-1 param 1) (the-as uint 3)) - (cond - ((send-event-function *target* a1-1) - (go launcher-active) - ) - (else - (let ((gp-0 'target-launch) - (a1-2 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'query) - (set! (-> a1-2 param 0) (the-as uint 'mode)) - (if (= (send-event-function *target* a1-2) gp-0) - (send-event *target* 'end-mode) - ) + (when (and *target* (>= (-> self active-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'powerup)) + (set! (-> a1-1 param 1) (the-as uint 3)) + (cond + ((send-event-function *target* a1-1) + (go launcher-active) + ) + (else + (let ((gp-0 'target-launch) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'mode)) + (if (= (send-event-function *target* a1-2) gp-0) + (send-event *target* 'end-mode) + ) + ) + ) + ) ) - ) + (if (and + (and *target* (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 2) + (set! (-> a1-5 message) 'query) + (set! (-> a1-5 param 0) (the-as uint 'powerup)) + (set! (-> a1-5 param 1) (the-as uint 3)) + (not (send-event-function *target* a1-5)) + ) + ) + (level-hint-spawn + (game-text-id daxter-launcher-no-eco) + "sksp0035" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) ) - ) - (if - (and - (and - *target* - (>= - 32768.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 2) - (set! (-> a1-5 message) 'query) - (set! (-> a1-5 param 0) (the-as uint 'powerup)) - (set! (-> a1-5 param 1) (the-as uint 3)) - (not (send-event-function *target* a1-5)) - ) - ) - (level-hint-spawn - (game-text-id daxter-launcher-no-eco) - "sksp0035" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) + (none) ) - (none) - ) :code (the-as (function none :behavior launcher) anim-loop) ) @@ -2641,114 +2099,74 @@ (defstate launcher-active (launcher) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (or (= arg2 'touch) (= arg2 'attack)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (send-event - arg0 - 'launch - (-> self spring-height) - (-> self camera) - (-> self dest) - (-> self seek-time) - ) + (when (or (= arg2 'touch) (= arg2 'attack)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (send-event arg0 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) + ) + (cond + ((= arg2 'instant-death) + (go launcher-deactivated) + ) + ((= arg2 'trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) + ) + ) ) - (cond - ((= arg2 'instant-death) - (go launcher-deactivated) - ) - ((= arg2 'trans) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) - (dummy-47 (-> self root-override)) - ) - ) - ) :exit (behavior () - (let ((v1-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> v1-0 command) (sound-command set-param)) - (set! (-> v1-0 id) (-> self sound-id)) - (set! (-> v1-0 parms volume) -4) - (set! (-> v1-0 auto-time) 120) - (set! (-> v1-0 auto-from) 2) - (set! (-> v1-0 parms mask) (the-as uint 17)) - (-> v1-0 id) + (let ((v1-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> v1-0 command) (sound-command set-param)) + (set! (-> v1-0 id) (-> self sound-id)) + (set! (-> v1-0 parms volume) -4) + (set! (-> v1-0 auto-time) 120) + (set! (-> v1-0 auto-from) 2) + (set! (-> v1-0 parms mask) (the-as uint 17)) + (-> v1-0 id) + ) + (none) ) - (none) - ) :trans (behavior () - (if - (or - (or - (not *target*) - (< - (-> self active-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (if (or + (or + (not *target*) + (< (-> self active-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'powerup)) + (set! (-> a1-1 param 1) (the-as uint 3)) + (not (send-event-function *target* a1-1)) + ) + ) + (go launcher-idle) ) - ) - ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'powerup)) - (set! (-> a1-1 param 1) (the-as uint 3)) - (not (send-event-function *target* a1-1)) - ) - ) - (go launcher-idle) - ) - (spawn (-> self part) (-> self root-override trans)) - (sound-play-by-name - (static-sound-name "launch-idle") - (-> self sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (if - (and - (and - *target* - (>= - (+ 2867.2 (-> self root-override root-prim prim-core world-sphere w)) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (spawn (-> self part) (-> self root-override trans)) + (sound-play-by-name (static-sound-name "launch-idle") (-> self sound-id) 1024 0 0 1 #t) + (if (and + (and + *target* + (>= (+ 2867.2 (-> self root-override root-prim prim-core world-sphere w)) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) + ) + (send-event *target* 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) ) - ) - ) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) - ) - (send-event - *target* - 'launch - (-> self spring-height) - (-> self camera) - (-> self dest) - (-> self seek-time) - ) + (none) ) - (none) - ) :code (behavior () - (sound-play-by-name - (static-sound-name "launch-start") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (sound-play-by-name (static-sound-name "launch-start") (new-sound-id) 1024 0 0 1 #t) + (anim-loop) + (none) ) - (anim-loop) - (none) - ) ) (defstate launcher-deactivated (launcher) @@ -2758,84 +2176,78 @@ (defmethod init-from-entity! launcher ((obj launcher) (arg0 entity-actor)) (stack-size-set! (-> obj main-thread) 128) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) + ) + (set! (-> s4-0 nav-radius) 13926.4) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) 13926.4) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (dummy-47 (-> obj root-override)) (set! (-> obj active-distance) 409600.0) - (set! - (-> obj spring-height) - (res-lump-float arg0 'spring-height :default 163840.0) - ) + (set! (-> obj spring-height) (res-lump-float arg0 'spring-height :default 163840.0)) (let ((s4-1 (res-lump-value arg0 'mode uint128))) - (let ((v1-18 (-> obj entity extra level name))) - (set! (-> obj part) (create-launch-control (cond - ((= v1-18 'beach) - (-> *part-group-id-table* 37) - ) - ((= v1-18 'swamp) - (-> *part-group-id-table* 39) - ) - (else - (-> *part-group-id-table* 38) - ) - ) - obj - ) - ) + (let ((v1-18 (-> obj entity extra level name))) + (set! (-> obj part) (create-launch-control + (cond + ((= v1-18 'beach) + (-> *part-group-id-table* 37) + ) + ((= v1-18 'swamp) + (-> *part-group-id-table* 39) + ) + (else + (-> *part-group-id-table* 38) + ) + ) + obj + ) + ) + ) + (let ((v1-24 (logand (the-as int s4-1) 255))) + (cond + ((= (the-as uint v1-24) 1) + (set! (-> obj camera) cam-launcher-longfall) + ) + ((= (the-as uint v1-24) 2) + (set! (-> obj camera) #f) + ) + (else + (set! (-> obj camera) cam-launcher-shortfall) + ) + ) + ) ) - (let ((v1-24 (logand (the-as int s4-1) 255))) - (cond - ((= (the-as uint v1-24) 1) - (set! (-> obj camera) cam-launcher-longfall) - ) - ((= (the-as uint v1-24) 2) - (set! (-> obj camera) #f) - ) - (else - (set! (-> obj camera) cam-launcher-shortfall) - ) - ) - ) - ) (let ((v1-29 (res-lump-struct arg0 'alt-vector vector))) - (when v1-29 - (set-vector! (-> obj dest) (-> v1-29 x) (-> v1-29 y) (-> v1-29 z) 1.0) - (set! (-> obj seek-time) (the-as uint (the int (* 300.0 (-> v1-29 w))))) + (when v1-29 + (set-vector! (-> obj dest) (-> v1-29 x) (-> v1-29 y) (-> v1-29 z) 1.0) + (set! (-> obj seek-time) (the-as uint (the int (* 300.0 (-> v1-29 w))))) + ) ) - ) (set! (-> obj sound-id) (new-sound-id)) (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) (go launcher-idle) (none) ) -(defbehavior - launcher-init-by-other launcher - ((arg0 vector) (arg1 float) (arg2 int) (arg3 float)) +(defbehavior launcher-init-by-other launcher ((arg0 vector) (arg1 float) (arg2 int) (arg3 float)) (stack-size-set! (-> self main-thread) 128) - (let - ((s2-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) - (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s2-0 s1-0) + (let ((s2-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) + (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) + (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s1-0 collide-with) (the-as uint 16)) + (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) + ) + (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) + (backup-collide-with-as s2-0) + (set! (-> self root-override) s2-0) ) - (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (backup-collide-with-as s2-0) - (set! (-> self root-override) s2-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0) (set-vector! (-> self root-override quat) 0.0 0.0 0.0 1.0) @@ -2843,38 +2255,39 @@ (set! (-> self spring-height) arg1) (set! (-> self active-distance) arg3) (let ((v1-23 (-> self entity extra level name))) - (set! (-> self part) (create-launch-control (cond - ((= v1-23 'beach) - (-> *part-group-id-table* 37) - ) - ((= v1-23 'swamp) - (-> *part-group-id-table* 39) - ) - (else - (-> *part-group-id-table* 38) - ) - ) - self - ) + (set! (-> self part) (create-launch-control + (cond + ((= v1-23 'beach) + (-> *part-group-id-table* 37) + ) + ((= v1-23 'swamp) + (-> *part-group-id-table* 39) + ) + (else + (-> *part-group-id-table* 38) + ) + ) + self + ) + ) ) - ) - (case (logand arg2 255) - ((1) + (case (logand arg2 255) + ((1) (set! (-> self camera) cam-launcher-longfall) ) - ((2) - (set! (-> self camera) #f) + ((2) + (set! (-> self camera) #f) + ) + (else + (set! (-> self camera) cam-launcher-shortfall) + ) ) - (else - (set! (-> self camera) cam-launcher-shortfall) - ) - ) (let ((v1-34 (res-lump-struct (-> self entity) 'alt-vector vector))) - (when v1-34 - (set-vector! (-> self dest) (-> v1-34 x) (-> v1-34 y) (-> v1-34 z) 1.0) - (set! (-> self seek-time) (the-as uint (the int (* 300.0 (-> v1-34 w))))) + (when v1-34 + (set-vector! (-> self dest) (-> v1-34 x) (-> v1-34 y) (-> v1-34 z) 1.0) + (set! (-> self seek-time) (the-as uint (the int (* 300.0 (-> v1-34 w))))) + ) ) - ) (set! (-> self sound-id) (new-sound-id)) (go launcher-idle) (none) @@ -2883,238 +2296,188 @@ (defstate touch-tracker-idle (touch-tracker) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-0 none)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'touched) - (let ((v1-1 (ppointer->process (-> self parent)))) - (when (!= v1-1 arg0) - (cond - ((= (-> self event) 'attack) - (cond - ((= (-> arg0 type) target) - (let - ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) (the-as process v1-1)) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) (-> self event)) - (set! (-> a1-2 param 0) (the-as uint #f)) - (let ((a2-2 (new 'static 'attack-info :mask #x20))) - (set! - (-> a2-2 mode) - (the-as symbol (-> self event-mode)) + (local-vars (v0-0 none)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'touched) + (let ((v1-1 (ppointer->process (-> self parent)))) + (when (!= v1-1 arg0) + (cond + ((= (-> self event) 'attack) + (cond + ((= (-> arg0 type) target) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) (the-as process v1-1)) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) (-> self event)) + (set! (-> a1-2 param 0) (the-as uint #f)) + (let ((a2-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-2 mode) (the-as symbol (-> self event-mode))) + (set! (-> a1-2 param 1) (the-as uint a2-2)) + ) + (send-event-function arg0 a1-2) + ) + ) + ((= (-> v1-1 type) target) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) (the-as process v1-1)) + (set! (-> a1-4 num-params) 4) + (set! (-> a1-4 message) (-> self event)) + (set! (-> a1-4 param 0) (the-as uint #f)) + (set! (-> a1-4 param 1) (the-as uint (-> self event-mode))) + (set! (-> a1-4 param 2) (the-as uint (-> *target* control unknown-dword50))) + (set! (-> a1-4 param 3) (the-as uint (-> *target* control unknown-dword51))) + (send-event-function arg0 a1-4) + ) + ) + (else + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) (the-as process v1-1)) + (set! (-> a1-5 num-params) 4) + (set! (-> a1-5 message) (-> self event)) + (set! (-> a1-5 param 0) (the-as uint #f)) + (set! (-> a1-5 param 1) (the-as uint (-> self event-mode))) + (let ((v1-19 (+ *global-attack-id* 1))) + (set! *global-attack-id* v1-19) + (set! (-> a1-5 param 2) (the-as uint v1-19)) + ) + (set! (-> a1-5 param 3) (the-as uint 0)) + (send-event-function arg0 a1-5) + ) + ) + ) + ) + ((-> self event) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) (the-as process v1-1)) + (set! (-> a1-6 num-params) 0) + (set! (-> a1-6 message) (-> self event)) + (send-event-function arg0 a1-6) + ) + ) + (else + (let ((t0-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> t0-5 from) arg0) + (set! (-> t0-5 num-params) arg1) + (set! (-> t0-5 message) arg2) + (set! (-> t0-5 param 0) (-> arg3 param 0)) + (set! (-> t0-5 param 1) (-> arg3 param 1)) + (set! (-> t0-5 param 2) (-> arg3 param 2)) + (set! (-> t0-5 param 3) (-> arg3 param 3)) + (set! (-> t0-5 param 4) (-> arg3 param 4)) + (set! (-> t0-5 param 5) (-> arg3 param 5)) + (set! (-> t0-5 param 6) (-> arg3 param 6)) + (send-event-function v1-1 t0-5) + ) + ) ) - (set! (-> a1-2 param 1) (the-as uint a2-2)) - ) - (send-event-function arg0 a1-2) ) - ) - ((= (-> v1-1 type) target) - (let - ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) (the-as process v1-1)) - (set! (-> a1-4 num-params) 4) - (set! (-> a1-4 message) (-> self event)) - (set! (-> a1-4 param 0) (the-as uint #f)) - (set! - (-> a1-4 param 1) - (the-as uint (-> self event-mode)) - ) - (set! - (-> a1-4 param 2) - (the-as uint (-> *target* control unknown-dword50)) - ) - (set! - (-> a1-4 param 3) - (the-as uint (-> *target* control unknown-dword51)) - ) - (send-event-function arg0 a1-4) - ) - ) - (else - (let - ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) (the-as process v1-1)) - (set! (-> a1-5 num-params) 4) - (set! (-> a1-5 message) (-> self event)) - (set! (-> a1-5 param 0) (the-as uint #f)) - (set! - (-> a1-5 param 1) - (the-as uint (-> self event-mode)) - ) - (let ((v1-19 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-19) - (set! (-> a1-5 param 2) (the-as uint v1-19)) - ) - (set! (-> a1-5 param 3) (the-as uint 0)) - (send-event-function arg0 a1-5) - ) - ) ) - ) - ((-> self event) - (let - ((a1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-6 from) (the-as process v1-1)) - (set! (-> a1-6 num-params) 0) - (set! (-> a1-6 message) (-> self event)) - (send-event-function arg0 a1-6) - ) - ) - (else - (let - ((t0-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> t0-5 from) arg0) - (set! (-> t0-5 num-params) arg1) - (set! (-> t0-5 message) arg2) - (set! (-> t0-5 param 0) (-> arg3 param 0)) - (set! (-> t0-5 param 1) (-> arg3 param 1)) - (set! (-> t0-5 param 2) (-> arg3 param 2)) - (set! (-> t0-5 param 3) (-> arg3 param 3)) - (set! (-> t0-5 param 4) (-> arg3 param 4)) - (set! (-> t0-5 param 5) (-> arg3 param 5)) - (set! (-> t0-5 param 6) (-> arg3 param 6)) - (send-event-function v1-1 t0-5) - ) - ) + ) + ((= v1-0 'target) + (set! v0-0 (the-as none (process->handle (the-as process (-> arg3 param 0))))) + (set! (-> self target) (the-as handle v0-0)) + v0-0 + ) + ((= v1-0 'event) + (set! (-> self event) (the-as symbol (-> arg3 param 0))) + (set! v0-0 (the-as none (-> arg3 param 1))) + (set! (-> self event-mode) (the-as basic v0-0)) + v0-0 + ) + ((= v1-0 'exit) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self run-function) (the-as (function none) v0-0)) + v0-0 + ) + ((= v1-0 'eval) + ((the-as (function touch-tracker none) (-> arg3 param 0)) self) + ) + ((= v1-0 'function) + (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self callback) (the-as (function touch-tracker none) v0-0)) + v0-0 ) ) - ) - ) - ((= v1-0 'target) - (set! - v0-0 - (the-as - none - (process->handle (the-as process (-> arg3 param 0))) - ) - ) - (set! (-> self target) (the-as handle v0-0)) - v0-0 - ) - ((= v1-0 'event) - (set! (-> self event) (the-as symbol (-> arg3 param 0))) - (set! v0-0 (the-as none (-> arg3 param 1))) - (set! (-> self event-mode) (the-as basic v0-0)) - v0-0 - ) - ((= v1-0 'exit) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! (-> self run-function) (the-as (function none) v0-0)) - v0-0 - ) - ((= v1-0 'eval) - ((the-as (function touch-tracker none) (-> arg3 param 0)) - self - ) - ) - ((= v1-0 'function) - (set! v0-0 (the-as none (-> arg3 param 0))) - (set! - (-> self callback) - (the-as (function touch-tracker none) v0-0) - ) - v0-0 - ) - ) - ) + ) + ) ) - ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while ((-> self run-function)) - (let* ((gp-0 (handle->process (-> self target))) - (a0-4 - (if - (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while ((-> self run-function)) + (let* ((gp-0 (handle->process (-> self target))) + (a0-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) + gp-0 + ) + ) ) + (when a0-4 + (let* ((gp-1 (-> (the-as process-drawable a0-4) root)) + (a0-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) + gp-1 + ) + ) + ) + (if a0-6 + (set! (-> self root-override trans quad) + (-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad) + ) + ) ) - ) - (when a0-4 - (let* ((gp-1 (-> (the-as process-drawable a0-4) root)) - (a0-6 - (if - (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - gp-1 - ) - ) - ) - (if a0-6 - (set! - (-> self root-override trans quad) - (-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad) - ) + ) ) - ) + (if (-> self callback) + ((-> self callback) self) + ) + (dummy-47 (-> self root-override)) + (let ((a1-3 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> a1-3 cshape1) (the-as collide-shape 2)) + (set! (-> a1-3 cshape2) (the-as collide-shape *touching-list*)) + (dummy-40 (-> self root-override) a1-3) + ) + (suspend) ) - ) - (if (-> self callback) - ((-> self callback) self) - ) - (dummy-47 (-> self root-override)) - (let ((a1-3 (new 'stack-no-clear 'touching-shapes-entry))) - (set! (-> a1-3 cshape1) (the-as collide-shape 2)) - (set! (-> a1-3 cshape2) (the-as collide-shape *touching-list*)) - (dummy-40 (-> self root-override) a1-3) - ) + (clear-collide-with-as (-> self root-override)) (suspend) + 0 + (none) ) - (clear-collide-with-as (-> self root-override)) - (suspend) - 0 - (none) - ) ) -(defbehavior - touch-tracker-init touch-tracker - ((arg0 vector) (arg1 float) (arg2 uint)) - (let - ((s4-0 - (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)) - ) +(defbehavior touch-tracker-init touch-tracker ((arg0 vector) (arg1 float) (arg2 uint)) + (let ((s4-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) + (set! (-> s2-0 collide-with) (the-as uint 3022)) + (set! (-> s2-0 prim-core offense) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) + (set-root-prim! s4-0 s2-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> s4-0 event-self) 'touched) + (set! (-> self root-override) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) - (set! (-> s2-0 collide-with) (the-as uint 3022)) - (set! (-> s2-0 prim-core offense) 4) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) - (set-root-prim! s4-0 s2-0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> s4-0 event-self) 'touched) - (set! (-> self root-override) s4-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (set! (-> self duration) arg2) (set! (-> self target) (the-as handle #f)) (set! (-> self event) #f) (set! (-> self callback) #f) - (set! - (-> self run-function) - (the-as - (function none) - (lambda :behavior touch-tracker - () - (< - (- (-> *display* base-frame-counter) (-> self state-time)) - (the-as int (-> self duration)) - ) - ) - ) - ) + (set! (-> self run-function) + (the-as + (function none) + (lambda :behavior touch-tracker + () + (< (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self duration))) + ) + ) + ) (set! (-> self event-hook) (-> touch-tracker-idle event)) (go touch-tracker-idle) (none) @@ -3124,131 +2487,115 @@ (let ((v1-1 (-> arg0 node-list length)) (s4-0 (-> arg0 root)) ) - (cond - ((>= v1-1 7) - (let ((v1-2 (rand-vu-int-range 3 (+ v1-1 -1)))) - (vector<-cspace! arg1 (-> arg0 node-list data v1-2)) - ) - ) - ((and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape)) - (vector+! - arg1 - (the-as vector (-> (the-as collide-shape s4-0) root-prim prim-core)) - (rand-vu-sphere-point! - arg1 - (-> (the-as collide-shape s4-0) root-prim prim-core world-sphere w) + (cond + ((>= v1-1 7) + (let ((v1-2 (rand-vu-int-range 3 (+ v1-1 -1)))) + (vector<-cspace! arg1 (-> arg0 node-list data v1-2)) + ) ) + ((and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape)) + (vector+! + arg1 + (the-as vector (-> (the-as collide-shape s4-0) root-prim prim-core)) + (rand-vu-sphere-point! arg1 (-> (the-as collide-shape s4-0) root-prim prim-core world-sphere w)) + ) + ) + (else + (vector+! arg1 (-> arg0 root trans) (rand-vu-sphere-point! arg1 (-> arg0 draw bounds w))) + ) ) - ) - (else - (vector+! - arg1 - (-> arg0 root trans) - (rand-vu-sphere-point! arg1 (-> arg0 draw bounds w)) - ) - ) ) - ) arg1 ) -(defun - process-drawable-pair-random-point! - ((arg0 process-drawable) (arg1 process-drawable) (arg2 vector) (arg3 float)) +(defun process-drawable-pair-random-point! ((arg0 process-drawable) (arg1 process-drawable) (arg2 vector) (arg3 float)) (let ((s4-0 (new-stack-vector0)) (s3-0 (new-stack-vector0)) ) - (process-drawable-random-point! arg0 s4-0) - (process-drawable-random-point! arg1 s3-0) - (vector-lerp! arg2 s4-0 s3-0 arg3) - ) + (process-drawable-random-point! arg0 s4-0) + (process-drawable-random-point! arg1 s3-0) + (vector-lerp! arg2 s4-0 s3-0 arg3) + ) ) (define *particle-quat* (new 'static 'quaternion :w 1.0)) -(defun - birth-func-set-quat - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +(defun birth-func-set-quat ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (a0-2 float) (a0-3 float)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - (let ((a0-1 arg2) - (v1-0 *particle-quat*) + (init-vf0-vector) + (let ((a0-1 arg2) + (v1-0 *particle-quat*) + ) + (cond + ((< (-> v1-0 w) 0.0) + (.lvf vf1 (&-> a0-1 conerot quad)) + (.lvf vf2 (&-> v1-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> a0-1 conerot quad) vf1) + (.mov a0-2 vf1) ) - (cond - ((< (-> v1-0 w) 0.0) - (.lvf vf1 (&-> a0-1 conerot quad)) - (.lvf vf2 (&-> v1-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> a0-1 conerot quad) vf1) - (.mov a0-2 vf1) + (else + (.lvf vf1 (&-> a0-1 conerot quad)) + (.lvf vf2 (&-> v1-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> a0-1 conerot quad) vf1) + (.mov a0-3 vf1) + ) + ) ) - (else - (.lvf vf1 (&-> a0-1 conerot quad)) - (.lvf vf2 (&-> v1-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> a0-1 conerot quad) vf1) - (.mov a0-3 vf1) - ) - ) + 0 + (none) ) - 0 - (none) - ) ) -(set! - (-> *part-id-table* 2528) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :index #xc :page #x2)) - (sp-func spt-birth-func 'birth-func-set-quat) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 0.5) 1.0) - (sp-flt spt-scale-y (meters 5.6)) - (sp-rnd-flt spt-r 0.0 44.0 1.0) - (sp-rnd-flt spt-g 0.0 64.0 1.0) - (sp-rnd-flt spt-b 128.0 32.0 1.0) - (sp-flt spt-a 128.0) - (sp-int spt-timer 5) - (sp-cpuinfo-flags bit2 bit3 bit14 left-multiply-quat) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2528) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #xc :page #x2)) + (sp-func spt-birth-func 'birth-func-set-quat) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 0.5) 1.0) + (sp-flt spt-scale-y (meters 5.6)) + (sp-rnd-flt spt-r 0.0 44.0 1.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3 bit14 left-multiply-quat) + (sp-end) + ) + ) + ) (defun draw-eco-beam ((arg0 vector) (arg1 vector)) (when (line-in-view-frustum? arg0 arg1) - (let ((s2-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) - (gp-1 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (vector+*! gp-1 arg0 s2-1 0.5) - (vector-normalize-copy! s4-0 s2-1 1.0) - (set! - (-> *part-id-table* 2528 init-specs 4 initial-valuef) - (vector-length s2-1) - ) - (forward-up->quaternion s5-0 s4-0 *y-vector*) - (dotimes (s4-1 3) - (quaternion-rotate-local-z! s5-0 s5-0 10922.667) - (quaternion-copy! *particle-quat* s5-0) - (sp-launch-particles-var - *sp-particle-system-3d* - (-> *part-id-table* 2528) - gp-1 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 + (let ((s2-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) + (gp-1 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'quaternion)) + ) + (vector+*! gp-1 arg0 s2-1 0.5) + (vector-normalize-copy! s4-0 s2-1 1.0) + (set! (-> *part-id-table* 2528 init-specs 4 initial-valuef) (vector-length s2-1)) + (forward-up->quaternion s5-0 s4-0 *y-vector*) + (dotimes (s4-1 3) + (quaternion-rotate-local-z! s5-0 s5-0 10922.667) + (quaternion-copy! *particle-quat* s5-0) + (sp-launch-particles-var + *sp-particle-system-3d* + (-> *part-id-table* 2528) + gp-1 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) ) - ) ) - ) 0 (none) ) diff --git a/goal_src/engine/game/task/process-taskable.gc b/goal_src/engine/game/task/process-taskable.gc index 7a53c91c57..7ffa881c4f 100644 --- a/goal_src/engine/game/task/process-taskable.gc +++ b/goal_src/engine/game/task/process-taskable.gc @@ -9,29 +9,19 @@ (defmethod dummy-52 process-taskable ((obj process-taskable)) (let ((v1-1 (-> obj draw shadow-ctrl))) - (when v1-1 - (let ((a0-1 v1-1)) - (set! (-> a0-1 settings bot-plane w) (- -12288.0)) - ) - 0 - (set! (-> v1-1 settings top-plane w) (- 4096.0)) - 0 + (when v1-1 + (let ((a0-1 v1-1)) + (set! (-> a0-1 settings bot-plane w) (- -12288.0)) + ) + 0 + (set! (-> v1-1 settings top-plane w) (- 4096.0)) + 0 + ) ) - ) (none) ) -(defmethod - init! - gui-query - ((obj gui-query) - (arg0 string) - (arg1 int) - (arg2 int) - (arg3 int) - (arg4 symbol) - (arg5 string) - ) +(defmethod init! gui-query ((obj gui-query) (arg0 string) (arg1 int) (arg2 int) (arg3 int) (arg4 symbol) (arg5 string)) (set! (-> obj x-position) arg1) (set! (-> obj y-position) arg2) (set! (-> obj message-space) arg3) @@ -48,208 +38,174 @@ (level-hint-surpress!) (hide-hud) (when (hud-hidden?) - (when (-> obj message) - (let - ((a1-2 - (new - 'stack - 'font-context - *font-default-matrix* - (-> obj x-position) - (-> obj y-position) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-4 a1-2)) - (set! (-> v1-4 width) (the float (- 512 (-> obj x-position)))) - ) - (let ((v1-5 a1-2)) - (set! (-> v1-5 height) (the float 40)) - ) - (let ((v1-6 a1-2)) - (set! (-> v1-6 scale) 0.9) - ) - (set! (-> a1-2 flags) (font-flags shadow kerning left large)) - (print-game-text (-> obj message) a1-2 #f 128 22) - ) - ) - (cond - ((-> obj only-allow-cancel) - (when (-> obj no-msg) - (clear *temp-string*) - (format *temp-string* "; = ~S" (-> obj no-msg)) - (let* - ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-0 (-> s4-0 base)) - ) - (draw-string-xy - *temp-string* - s4-0 - (-> obj x-position) - (+ (-> obj y-position) 5 (-> obj message-space)) - (font-color default) - (font-flags shadow kerning large) - ) - (let ((a3-4 (-> s4-0 base))) - (let ((v1-17 (the-as object (-> s4-0 base)))) - (set! - (-> (the-as dma-packet v1-17) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) + (when (-> obj message) + (let ((a1-2 (new + 'stack + 'font-context + *font-default-matrix* + (-> obj x-position) + (-> obj y-position) + 0.0 + (font-color default) + (font-flags shadow kerning) + ) + ) + ) + (let ((v1-4 a1-2)) + (set! (-> v1-4 width) (the float (- 512 (-> obj x-position)))) ) - (set! (-> (the-as dma-packet v1-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-17) vif1) (new 'static 'vif-tag)) - (set! (-> s4-0 base) (&+ (the-as pointer v1-17) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug-draw0) - s5-0 - (the-as (pointer dma-tag) a3-4) - ) + (let ((v1-5 a1-2)) + (set! (-> v1-5 height) (the float 40)) + ) + (let ((v1-6 a1-2)) + (set! (-> v1-6 scale) 0.9) + ) + (set! (-> a1-2 flags) (font-flags shadow kerning left large)) + (print-game-text (-> obj message) a1-2 #f 128 22) ) + ) + (cond + ((-> obj only-allow-cancel) + (when (-> obj no-msg) + (clear *temp-string*) + (format *temp-string* "; = ~S" (-> obj no-msg)) + (let* ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s5-0 (-> s4-0 base)) + ) + (draw-string-xy + *temp-string* + s4-0 + (-> obj x-position) + (+ (-> obj y-position) 5 (-> obj message-space)) + (font-color default) + (font-flags shadow kerning large) + ) + (let ((a3-4 (-> s4-0 base))) + (let ((v1-17 (the-as object (-> s4-0 base)))) + (set! (-> (the-as dma-packet v1-17) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-17) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-17) vif1) (new 'static 'vif-tag)) + (set! (-> s4-0 base) (&+ (the-as pointer v1-17) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug-draw0) + s5-0 + (the-as (pointer dma-tag) a3-4) + ) + ) + ) + ) + ) + (else + (let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s5-1 (-> s4-1 base)) + ) + (draw-string-xy + (lookup-text! *common-text* (game-text-id confirm) #f) + s4-1 + (-> obj x-position) + (+ (-> obj y-position) 5 (-> obj message-space)) + (font-color default) + (font-flags shadow kerning large) + ) + (let ((a3-7 (-> s4-1 base))) + (let ((v1-29 (the-as object (-> s4-1 base)))) + (set! (-> (the-as dma-packet v1-29) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-29) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-29) vif1) (new 'static 'vif-tag)) + (set! (-> s4-1 base) (&+ (the-as pointer v1-29) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug-draw0) + s5-1 + (the-as (pointer dma-tag) a3-7) + ) + ) + ) + ) + ) + (cond + ((!= (-> obj decision) 'undecided) + ) + ((and (cpad-pressed? 0 x) (not (-> obj only-allow-cancel))) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons x)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x)) + (set! (-> obj decision) 'yes) + ) + ((cpad-pressed? 0 triangle) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) + (set! (-> obj decision) 'no) ) ) - ) - (else - (let* - ((s4-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-1 (-> s4-1 base)) - ) - (draw-string-xy - (lookup-text! *common-text* (game-text-id confirm) #f) - s4-1 - (-> obj x-position) - (+ (-> obj y-position) 5 (-> obj message-space)) - (font-color default) - (font-flags shadow kerning large) - ) - (let ((a3-7 (-> s4-1 base))) - (let ((v1-29 (the-as object (-> s4-1 base)))) - (set! - (-> (the-as dma-packet v1-29) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) - ) - (set! (-> (the-as dma-packet v1-29) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-29) vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (&+ (the-as pointer v1-29) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug-draw0) - s5-1 - (the-as (pointer dma-tag) a3-7) - ) - ) - ) - ) ) - (cond - ((!= (-> obj decision) 'undecided) - ) - ((and - (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x)) - (not (-> obj only-allow-cancel)) - ) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons x)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x)) - (set! (-> obj decision) 'yes) - ) - ((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (set! (-> obj decision) 'no) - ) - ) - ) (-> obj decision) ) (defmethod relocate process-taskable ((obj process-taskable) (arg0 int)) - (the-as - process-taskable - ((method-of-type process-drawable relocate) obj arg0) - ) + (the-as process-taskable ((method-of-type process-drawable relocate) obj arg0)) ) (defmethod dummy-46 process-taskable ((obj process-taskable)) (with-pp - (when (nonzero? (-> obj sound-flava)) - (let - ((s5-1 - (vector-! - (new 'stack-no-clear 'vector) - (target-pos 0) - (the-as vector (-> obj root-override root-prim prim-core)) + (when (nonzero? (-> obj sound-flava)) + (let ((s5-1 (vector-! + (new 'stack-no-clear 'vector) + (target-pos 0) + (the-as vector (-> obj root-override root-prim prim-core)) + ) + ) + ) + (set! (-> s5-1 y) (* 4.0 (-> s5-1 y))) + (cond + ((< (vector-length s5-1) 102400.0) + (when (not (-> obj have-flava)) + (set! (-> obj have-flava) #t) + (set-setting! *setting-control* pp 'sound-flava #f 20.0 (the-as int (-> obj sound-flava))) + ) + ) + ((-> obj have-flava) + (clear-pending-settings-from-process *setting-control* pp 'sound-flava) + (set! (-> obj have-flava) #f) + ) + ) ) - ) ) - (set! (-> s5-1 y) (* 4.0 (-> s5-1 y))) - (cond - ((< (vector-length s5-1) 102400.0) - (when (not (-> obj have-flava)) - (set! (-> obj have-flava) #t) - (set-setting! - *setting-control* - pp - 'sound-flava - #f - 20.0 - (the-as int (-> obj sound-flava)) - ) + (when (-> obj music) + (let ((s5-3 (vector-! + (new 'stack-no-clear 'vector) + (target-pos 0) + (the-as vector (-> obj root-override root-prim prim-core)) + ) + ) + ) + (set! (-> s5-3 y) (* 4.0 (-> s5-3 y))) + (cond + ((< (vector-length s5-3) 102400.0) + (when (not (-> obj have-music)) + (set! (-> obj have-music) #t) + (set-setting! *setting-control* pp 'music (the-as symbol (-> obj music)) 0.0 0) + ) + ) + ((-> obj have-music) + (clear-pending-settings-from-process *setting-control* pp 'music) + (set! (-> obj have-music) #f) + ) + ) ) - ) - ((-> obj have-flava) - (clear-pending-settings-from-process *setting-control* pp 'sound-flava) - (set! (-> obj have-flava) #f) - ) ) - ) + 0 + (none) ) - (when (-> obj music) - (let - ((s5-3 - (vector-! - (new 'stack-no-clear 'vector) - (target-pos 0) - (the-as vector (-> obj root-override root-prim prim-core)) - ) - ) - ) - (set! (-> s5-3 y) (* 4.0 (-> s5-3 y))) - (cond - ((< (vector-length s5-3) 102400.0) - (when (not (-> obj have-music)) - (set! (-> obj have-music) #t) - (set-setting! - *setting-control* - pp - 'music - (the-as symbol (-> obj music)) - 0.0 - 0 - ) - ) - ) - ((-> obj have-music) - (clear-pending-settings-from-process *setting-control* pp 'music) - (set! (-> obj have-music) #f) - ) - ) - ) - ) - 0 - (none) - ) ) (defmethod get-art-elem process-taskable ((obj process-taskable)) (the-as art-element (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) - ) + (-> obj skel root-channel 0 frame-group) + ) + ) ) (defmethod play-anim! process-taskable ((obj process-taskable) (arg0 symbol)) @@ -258,10 +214,10 @@ (defmethod dummy-33 process-taskable ((obj process-taskable)) (let ((s5-0 (play-anim! obj #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> (the-as spool-anim s5-0) name) 0 obj -99.0) + (if (type-type? (-> s5-0 type) spool-anim) + (spool-push *art-control* (-> (the-as spool-anim s5-0) name) 0 obj -99.0) + ) ) - ) 0 (none) ) @@ -269,83 +225,73 @@ (defmethod close-anim-file! process-taskable ((obj process-taskable)) (let* ((gp-0 (play-anim! obj #f)) (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) spool-anim)) - gp-0 - ) - ) + gp-0 + ) + ) ) - (if v1-2 - (file-status *art-control* (-> (the-as spool-anim v1-2) name) 0) + (if v1-2 + (file-status *art-control* (-> (the-as spool-anim v1-2) name) 0) + ) ) - ) ) -(defmethod - get-accept-anim - process-taskable - ((obj process-taskable) (arg0 symbol)) +(defmethod get-accept-anim process-taskable ((obj process-taskable) (arg0 symbol)) (the-as spool-anim #f) ) (defmethod push-accept-anim process-taskable ((obj process-taskable)) (let ((s5-0 (get-accept-anim obj #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> s5-0 name) 0 obj -99.0) + (if (type-type? (-> s5-0 type) spool-anim) + (spool-push *art-control* (-> s5-0 name) 0 obj -99.0) + ) ) - ) 0 (none) ) -(defmethod - get-reject-anim - process-taskable - ((obj process-taskable) (arg0 symbol)) +(defmethod get-reject-anim process-taskable ((obj process-taskable) (arg0 symbol)) (the-as spool-anim #f) ) (defmethod push-reject-anim process-taskable ((obj process-taskable)) (let ((s5-0 (get-reject-anim obj #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> s5-0 name) 0 obj -99.0) + (if (type-type? (-> s5-0 type) spool-anim) + (spool-push *art-control* (-> s5-0 name) 0 obj -99.0) + ) ) - ) 0 (none) ) (defmethod dummy-38 process-taskable ((obj process-taskable)) (if (nonzero? (-> obj cell-for-task)) - (go (method-of-object obj give-cell)) - ) + (go (method-of-object obj give-cell)) + ) (go (method-of-object obj release)) (none) ) (defbehavior process-taskable-anim-loop process-taskable () (when (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (get-art-elem self) - ) - (ja-channel-push! 1 60) - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) + (-> self skel root-channel 0 frame-group) + ) + (get-art-elem self) + ) + (ja-channel-push! 1 60) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) + ) ) - ) (while #t - (suspend) - (let ((a0-8 (-> self skel root-channel 0))) - (set! (-> a0-8 param 0) 1.0) - (joint-control-channel-group-eval! - a0-8 - (the-as art-joint-anim #f) - num-func-loop! - ) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) 1.0) + (joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-loop!) + ) + (if (= (-> self next-state name) 'idle) + (TODO-RENAME-43 self) + ) ) - (if (= (-> self next-state name) 'idle) - (TODO-RENAME-43 self) - ) - ) (the-as none 0) (none) ) @@ -354,17 +300,17 @@ :virtual #t :trans (behavior () - (when (process-release? *target*) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (if (should-display? self) - (go-virtual idle) - (go-virtual hidden) - ) + (when (process-release? *target*) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (if (should-display? self) + (go-virtual idle) + (go-virtual hidden) + ) + ) + (dummy-33 self) + ((-> self cur-trans-hook)) + (none) ) - (dummy-33 self) - ((-> self cur-trans-hook)) - (none) - ) :code process-taskable-anim-loop :post @@ -375,32 +321,32 @@ :virtual #t :trans (behavior () - (cond - ((nonzero? (-> self cell-for-task)) - (let ((gp-0 (handle->process (-> self cell-x)))) - (when gp-0 - (send-event *target* 'trans 'reset) - (send-event gp-0 'pickup (target-pos 0)) - (go-virtual idle) + (cond + ((nonzero? (-> self cell-for-task)) + (let ((gp-0 (handle->process (-> self cell-x)))) + (when gp-0 + (send-event *target* 'trans 'reset) + (send-event gp-0 'pickup (target-pos 0)) + (go-virtual idle) + ) + ) + (format #t "ERROR: ~S no cell spawned~%" (-> self name)) + (send-event *target* 'get-pickup 6 (the float (-> self cell-for-task))) ) + (else + (format + #t + "ERROR: ~S got into give-cell with give-cell == #f task = ~S~%" + (-> self name) + (game-task->string (current-task (-> self tasks))) + ) + ) ) - (format #t "ERROR: ~S no cell spawned~%" (-> self name)) - (send-event *target* 'get-pickup 6 (the float (-> self cell-for-task))) - ) - (else - (format - #t - "ERROR: ~S got into give-cell with give-cell == #f task = ~S~%" - (-> self name) - (game-task->string (current-task (-> self tasks))) - ) - ) + (go-virtual release) + (dummy-33 self) + ((-> self cur-trans-hook)) + (none) ) - (go-virtual release) - (dummy-33 self) - ((-> self cur-trans-hook)) - (none) - ) :code process-taskable-anim-loop :post @@ -410,31 +356,21 @@ (defstate lose (process-taskable) :virtual #t :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :trans (behavior () - (if - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1500) - (or - (not *target*) - (< - 20480.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (if (and + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1500) + (or + (not *target*) + (< 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + ) + (go-virtual idle) ) - ) - ) - ) - (go-virtual idle) + ((-> self cur-trans-hook)) + (none) ) - ((-> self cur-trans-hook)) - (none) - ) :code process-taskable-anim-loop :post @@ -453,35 +389,17 @@ (init! (-> self query) (the-as string #f) 40 150 25 #t (the-as string #f)) (logior! (-> self skel status) 8) (let ((gp-0 (get-process *default-dead-pool* othercam #x4000))) - (set! (-> self camera) (ppointer->handle (when gp-0 - (let - ((t9-2 - (method-of-type - othercam - activate - ) - ) - ) - (t9-2 - (the-as othercam gp-0) - self - 'othercam - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-0 - othercam-init-by-other - self - (-> self cam-joint-index) - #f - #t - ) - (-> gp-0 ppointer) - ) - ) + (set! (-> self camera) + (ppointer->handle (when gp-0 + (let ((t9-2 (method-of-type othercam activate))) + (t9-2 (the-as othercam gp-0) self 'othercam (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 othercam-init-by-other self (-> self cam-joint-index) #f #t) + (-> gp-0 ppointer) + ) + ) + ) ) - ) (set! (-> self cell-for-task) (game-task none)) (set! (-> self skippable) #f) (set! (-> self blend-on-exit) #f) @@ -492,10 +410,10 @@ (defbehavior process-taskable-play-anim-exit process-taskable () (set! (-> self skel status) (logand -9 (-> self skel status))) (let ((a0-4 (handle->process (-> self camera)))) - (if a0-4 - (deactivate a0-4) + (if a0-4 + (deactivate a0-4) + ) ) - ) (set! (-> self last-talk) (the-as uint (-> *display* game-frame-counter))) (dummy-52 self) (none) @@ -503,249 +421,175 @@ (defbehavior process-taskable-play-anim-trans process-taskable () (if (nonzero? *camera-look-through-other*) - (set! *camera-look-through-other* 2) - ) + (set! *camera-look-through-other* 2) + ) (set-letterbox-frames 5) (draw-npc-shadow self) (none) ) -(defbehavior - process-taskable-play-anim-code process-taskable - ((arg0 art-joint-anim) (arg1 basic)) +(defbehavior process-taskable-play-anim-code process-taskable ((arg0 art-joint-anim) (arg1 basic)) (when (nonzero? (-> self cell-for-task)) - (cond - ((name= (-> self state name) "play-anim") - (let ((s4-0 (get-process *default-dead-pool* fuel-cell #x4000))) - (set! (-> self cell-x) (ppointer->handle (when s4-0 - (let - ((t9-2 - (method-of-type - fuel-cell - activate - ) - ) - ) - (t9-2 - (the-as fuel-cell s4-0) - self - 'fuel-cell - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s4-0 - fuel-cell-init-as-clone - (process->handle self) - (-> self cell-for-task) - ) - (-> s4-0 ppointer) - ) - ) + (cond + ((name= (-> self state name) "play-anim") + (let ((s4-0 (get-process *default-dead-pool* fuel-cell #x4000))) + (set! (-> self cell-x) + (ppointer->handle + (when s4-0 + (let ((t9-2 (method-of-type fuel-cell activate))) + (t9-2 (the-as fuel-cell s4-0) self 'fuel-cell (the-as pointer #x70004000)) + ) + (run-now-in-process s4-0 fuel-cell-init-as-clone (process->handle self) (-> self cell-for-task)) + (-> s4-0 ppointer) + ) + ) + ) + ) ) + (else + (format #t "ERROR: ~S ~S trying to give cell on release~%" (-> self name) (-> self state name)) + ) ) + ) + (cond + ((and arg1 (type-type? (-> arg1 type) spool-anim)) + (when *target* + (while (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 1) + (set! (-> a1-9 message) 'clone-anim) + (set! (-> a1-9 param 0) (the-as uint self)) + (not (send-event-function *target* a1-9)) + ) + (spool-push *art-control* (-> (the-as spool-anim arg1) name) 0 self -99.0) + (format #t "WARNING: ~A stall on not cloning.~%" (-> self name)) + (suspend) + ) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + ) + (push-setting! *setting-control* self 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) + (push-setting! *setting-control* self 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) + (push-setting! + *setting-control* + self + 'ambient-volume + 'rel + (-> *setting-control* current ambient-volume-movie) + 0 + ) + (if (-> self blend-on-exit) + (set! (-> self blend-on-exit) arg0) + ) + (if (and *debug-segment* *cheat-mode*) + (ja-play-spooled-anim + (the-as spool-anim arg1) + arg0 + (the-as art-joint-anim (-> self blend-on-exit)) + (lambda ((arg0 process-taskable)) (= (get-response (-> arg0 query)) 'no)) + ) + (ja-play-spooled-anim + (the-as spool-anim arg1) + arg0 + (the-as art-joint-anim (-> self blend-on-exit)) + (the-as (function process-drawable symbol) false-func) + ) + ) + (clear-pending-settings-from-process *setting-control* self 'music-volume) + (clear-pending-settings-from-process *setting-control* self 'sfx-volume) + (clear-pending-settings-from-process *setting-control* self 'ambient-volume) + (send-event *target* 'blend-shape #f) ) (else - (format - #t - "ERROR: ~S ~S trying to give cell on release~%" - (-> self name) - (-> self state name) - ) - ) - ) - ) - (cond - ((and arg1 (type-type? (-> arg1 type) spool-anim)) - (when *target* - (while (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 1) - (set! (-> a1-9 message) 'clone-anim) - (set! (-> a1-9 param 0) (the-as uint self)) - (not (send-event-function *target* a1-9)) - ) - (spool-push *art-control* (-> (the-as spool-anim arg1) name) 0 self -99.0) - (format #t "WARNING: ~A stall on not cloning.~%" (-> self name)) - (suspend) - ) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - ) - (push-setting! - *setting-control* - self - 'music-volume - 'rel - (-> *setting-control* current music-volume-movie) - 0 - ) - (push-setting! - *setting-control* - self - 'sfx-volume - 'rel - (-> *setting-control* current sfx-volume-movie) - 0 - ) - (push-setting! - *setting-control* - self - 'ambient-volume - 'rel - (-> *setting-control* current ambient-volume-movie) - 0 - ) - (if (-> self blend-on-exit) - (set! (-> self blend-on-exit) arg0) - ) - (if (and *debug-segment* *cheat-mode*) - (ja-play-spooled-anim - (the-as spool-anim arg1) - arg0 - (the-as art-joint-anim (-> self blend-on-exit)) - (lambda ((arg0 process-taskable)) - (= (get-response (-> arg0 query)) 'no) - ) - ) - (ja-play-spooled-anim - (the-as spool-anim arg1) - arg0 - (the-as art-joint-anim (-> self blend-on-exit)) - (the-as (function process-drawable symbol) false-func) - ) - ) - (clear-pending-settings-from-process *setting-control* self 'music-volume) - (clear-pending-settings-from-process *setting-control* self 'sfx-volume) - (clear-pending-settings-from-process *setting-control* self 'ambient-volume) - (send-event *target* 'blend-shape #f) - ) - (else - (when (not arg1) - (format - #t - "ERROR: ~S ~S got #f from anim picker~%" - (-> self name) - (-> self state name) - ) - (set! arg1 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (when (not (type-type? (-> arg1 type) art-joint-anim)) - (format - 0 - "ERROR: ~S ~S anim picker didn't return spool-anim or joint-art-anim (probably need to override it)~%" - (-> self name) - (-> self state name) - ) - (set! arg1 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (format - #t - "~S ~S anim ~S~%" - (-> self name) - (-> self state name) - (-> (the-as art-joint-anim arg1) name) - ) - (ja-channel-push! 1 60) - (set! - (-> self skel root-channel 0 frame-group) - (the-as art-joint-anim arg1) - ) - (when (< (ja-num-frames 0) 3) - (suspend) - (suspend) - 0 - ) - (let ((a0-30 (-> self skel root-channel 0))) - (set! (-> a0-30 frame-group) (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - (set! - (-> a0-30 param 0) - (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-30 param 1) 1.0) - (set! (-> a0-30 frame-num) 0.0) - (joint-control-channel-group! - a0-30 - (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (when (and *debug-segment* (= (get-response (-> self query)) 'no)) - (let ((v1-106 (-> self skel root-channel 0))) - (set! (-> v1-106 num-func) num-func-identity) - (set! - (-> v1-106 frame-num) - (the float (+ (-> v1-106 frame-group data 0 length) -1)) + (when (not arg1) + (format #t "ERROR: ~S ~S got #f from anim picker~%" (-> self name) (-> self state name)) + (set! arg1 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) ) - ) + (when (not (type-type? (-> arg1 type) art-joint-anim)) + (format + 0 + "ERROR: ~S ~S anim picker didn't return spool-anim or joint-art-anim (probably need to override it)~%" + (-> self name) + (-> self state name) + ) + (set! arg1 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (format #t "~S ~S anim ~S~%" (-> self name) (-> self state name) (-> (the-as art-joint-anim arg1) name)) + (ja-channel-push! 1 60) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim arg1)) + (when (< (ja-num-frames 0) 3) + (suspend) + (suspend) + 0 + ) + (let ((a0-30 (-> self skel root-channel 0))) + (set! (-> a0-30 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> a0-30 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-30 param 1) 1.0) + (set! (-> a0-30 frame-num) 0.0) + (joint-control-channel-group! + a0-30 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (when (and *debug-segment* (= (get-response (-> self query)) 'no)) + (let ((v1-106 (-> self skel root-channel 0))) + (set! (-> v1-106 num-func) num-func-identity) + (set! (-> v1-106 frame-num) (the float (+ (-> v1-106 frame-group data 0 length) -1))) + ) + ) + (suspend) + (let ((a0-38 (-> self skel root-channel 0))) + (set! (-> a0-38 param 0) (the float (+ (-> a0-38 frame-group data 0 length) -1))) + (set! (-> a0-38 param 1) 1.0) + (joint-control-channel-group-eval! a0-38 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + #f ) - (suspend) - (let ((a0-38 (-> self skel root-channel 0))) - (set! - (-> a0-38 param 0) - (the float (+ (-> a0-38 frame-group data 0 length) -1)) - ) - (set! (-> a0-38 param 1) 1.0) - (joint-control-channel-group-eval! - a0-38 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - #f ) - ) ) (defstate play-accept (process-taskable) :virtual #t :enter - (the-as - (function none :behavior process-taskable) - process-taskable-play-anim-enter - ) + (the-as (function none :behavior process-taskable) process-taskable-play-anim-enter) :exit process-taskable-play-anim-exit :trans - (behavior () - (process-taskable-play-anim-trans) - ((-> self cur-trans-hook)) - (none) - ) + (behavior () (process-taskable-play-anim-trans) ((-> self cur-trans-hook)) (none)) :code (behavior () - (process-taskable-play-anim-code - (the-as art-joint-anim (get-art-elem self)) - (get-accept-anim self #t) + (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-accept-anim self #t)) + (while (not (process-release? *target*)) + (suspend) + ) + (go-virtual enter-playing) + (none) ) - (while (not (process-release? *target*)) - (suspend) - ) - (go-virtual enter-playing) - (none) - ) :post (the-as (function none :behavior process-taskable) ja-post) ) @@ -753,27 +597,17 @@ (defstate play-reject (process-taskable) :virtual #t :enter - (the-as - (function none :behavior process-taskable) - process-taskable-play-anim-enter - ) + (the-as (function none :behavior process-taskable) process-taskable-play-anim-enter) :exit process-taskable-play-anim-exit :trans - (behavior () - (process-taskable-play-anim-trans) - ((-> self cur-trans-hook)) - (none) - ) + (behavior () (process-taskable-play-anim-trans) ((-> self cur-trans-hook)) (none)) :code (behavior () - (process-taskable-play-anim-code - (the-as art-joint-anim (get-art-elem self)) - (get-reject-anim self #t) + (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-reject-anim self #t)) + (go-virtual release) + (none) ) - (go-virtual release) - (none) - ) :post (the-as (function none :behavior process-taskable) ja-post) ) @@ -782,51 +616,51 @@ :virtual #t :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (game-text-id confirm-play) #f) - 40 - 150 - 25 - #f - (lookup-text! *common-text* (game-text-id quit) #f) + (init! + (-> self query) + (lookup-text! *common-text* (game-text-id confirm-play) #f) + 40 + 150 + 25 + #f + (lookup-text! *common-text* (game-text-id quit) #f) + ) + (none) ) - (none) - ) :exit process-taskable-play-anim-exit :trans (behavior () - (case (current-status (-> self tasks)) - (((task-status need-reminder-a)) - (case (get-response (-> self query)) - (('yes) - (go-virtual play-accept) + (case (current-status (-> self tasks)) + (((task-status need-reminder-a)) + (case (get-response (-> self query)) + (('yes) + (go-virtual play-accept) + ) + (('no) + (go-virtual play-reject) + ) ) - (('no) - (go-virtual play-reject) - ) + (push-accept-anim self) ) - (push-accept-anim self) - ) - (else - (let ((gp-0 (get-response (-> self query)))) - (cond - ((and (= gp-0 'yes) (process-release? *target*)) - (go-virtual enter-playing) + (else + (let ((gp-0 (get-response (-> self query)))) + (cond + ((and (= gp-0 'yes) (process-release? *target*)) + (go-virtual enter-playing) + ) + ((= gp-0 'no) + (go-virtual play-reject) + ) + ) + ) ) - ((= gp-0 'no) - (go-virtual play-reject) - ) - ) ) - ) + (push-reject-anim self) + (set! *camera-look-through-other* 2) + ((-> self cur-trans-hook)) + (none) ) - (push-reject-anim self) - (set! *camera-look-through-other* 2) - ((-> self cur-trans-hook)) - (none) - ) :code process-taskable-anim-loop :post @@ -837,69 +671,60 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('shadow) - (cond - ((-> arg3 param 0) - (let ((v0-0 (the-as object (-> self shadow-backup)))) - (set! (-> self draw shadow) (the-as shadow-geo v0-0)) - v0-0 + (case arg2 + (('shadow) + (cond + ((-> arg3 param 0) + (let ((v0-0 (the-as object (-> self shadow-backup)))) + (set! (-> self draw shadow) (the-as shadow-geo v0-0)) + v0-0 + ) + ) + (else + (set! (-> self draw shadow) #f) + #f + ) ) - ) - (else - (set! (-> self draw shadow) #f) - #f - ) + ) + (('shadow-min-max) + (let ((v1-5 (-> self draw shadow-ctrl))) + (let ((a0-4 v1-5)) + (set! (-> a0-4 settings bot-plane w) (- (the-as float (-> arg3 param 0)))) + ) + 0 + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> arg3 param 1)))) + ) + 0 ) ) - (('shadow-min-max) - (let ((v1-5 (-> self draw shadow-ctrl))) - (let ((a0-4 v1-5)) - (set! - (-> a0-4 settings bot-plane w) - (- (the-as float (-> arg3 param 0))) - ) - ) - 0 - (set! (-> v1-5 settings top-plane w) (- (the-as float (-> arg3 param 1)))) - ) - 0 - ) ) - ) :enter - (the-as - (function none :behavior process-taskable) - process-taskable-play-anim-enter - ) + (the-as (function none :behavior process-taskable) process-taskable-play-anim-enter) :exit process-taskable-play-anim-exit :trans (behavior () - (process-taskable-play-anim-trans) - (let ((a3-0 (handle->process (-> self cell-x)))) - (if a3-0 - (spool-push *art-control* (-> self fuel-cell-anim name) 0 a3-0 -99.0) - ) + (process-taskable-play-anim-trans) + (let ((a3-0 (handle->process (-> self cell-x)))) + (if a3-0 + (spool-push *art-control* (-> self fuel-cell-anim name) 0 a3-0 -99.0) + ) + ) + ((-> self cur-trans-hook)) + (none) ) - ((-> self cur-trans-hook)) - (none) - ) :code (behavior () - (process-taskable-play-anim-code - (the-as art-joint-anim (get-art-elem self)) - (play-anim! self #t) + (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (play-anim! self #t)) + (dummy-38 self) + (none) ) - (dummy-38 self) - (none) - ) :post (the-as (function none :behavior process-taskable) ja-post) ) (defbehavior process-taskable-clean-up-after-talking process-taskable () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (set! (-> self skel status) (logand -2 (-> self skel status))) (clear-pending-settings-from-process *setting-control* self 'border-mode) (clear-pending-settings-from-process *setting-control* self 'talking) @@ -910,30 +735,28 @@ #t ) -(defbehavior - process-taskable-hide-handler process-taskable - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('clone) +(defbehavior process-taskable-hide-handler process-taskable ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('clone) (go-virtual be-clone (the-as handle (-> arg3 param 0))) ) - (('play-anim) - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self been-kicked) #t) - (go-virtual idle) + (('play-anim) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self been-kicked) #t) + (go-virtual idle) + ) + (('hidden-other) + (go-virtual hidden-other) + ) ) - (('hidden-other) - (go-virtual hidden-other) - ) - ) (none) ) (defbehavior process-taskable-hide-enter process-taskable () (set! (-> self state-time) (-> *display* base-frame-counter)) (let ((v1-3 (-> self draw shadow-ctrl))) - (logior! (-> v1-3 settings flags) 32) - ) + (logior! (-> v1-3 settings flags) 32) + ) 0 (process-taskable-clean-up-after-talking) (clear-collide-with-as (-> self root-override)) @@ -943,22 +766,22 @@ (defbehavior process-taskable-hide-exit process-taskable ((arg0 symbol)) (cond - (arg0 - (process-entity-status! self (entity-perm-status bit-3) #f) + (arg0 + (process-entity-status! self (entity-perm-status bit-3) #f) + ) + (else + (ja-channel-set! 1) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) + ) + (restore-collide-with-as (-> self root-override)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let ((v1-7 (-> self draw shadow-ctrl))) + (set! (-> v1-7 settings flags) (logand -33 (-> v1-7 settings flags))) + ) + 0 + ) ) - (else - (ja-channel-set! 1) - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) - ) - (restore-collide-with-as (-> self root-override)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let ((v1-7 (-> self draw shadow-ctrl))) - (set! (-> v1-7 settings flags) (logand -33 (-> v1-7 settings flags))) - ) - 0 - ) - ) (none) ) @@ -966,29 +789,23 @@ :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior process-taskable) - process-taskable-hide-handler - ) + (function process int symbol event-message-block object :behavior process-taskable) + process-taskable-hide-handler + ) :enter - (the-as - (function none :behavior process-taskable) - process-taskable-hide-enter - ) + (the-as (function none :behavior process-taskable) process-taskable-hide-enter) :exit - (behavior () - (process-taskable-hide-exit (= (-> self next-state name) 'hidden)) - (none) - ) + (behavior () (process-taskable-hide-exit (= (-> self next-state name) 'hidden)) (none)) :trans (behavior () - (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (process-entity-status! self (entity-perm-status bit-3) #f) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (process-entity-status! self (entity-perm-status bit-3) #f) + ) + (if (or (-> self been-kicked) (should-display? self)) + (go-virtual idle) + ) + (none) ) - (if (or (-> self been-kicked) (should-display? self)) - (go-virtual idle) - ) - (none) - ) :code (the-as (function none :behavior process-taskable) anim-loop) ) @@ -996,61 +813,45 @@ ;; WARN: disable def twice: 4. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defmethod TODO-RENAME-50 process-taskable ((obj process-taskable)) (if *target* - (or - (not *target*) - (< - 245760.0 - (vector-vector-distance - (-> obj root-override trans) - (-> *target* control trans) + (or + (not *target*) + (< 245760.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans))) + ) + (< 60397978000.0 + (vector-vector-distance-squared (the-as vector (-> obj root-override root-prim prim-core)) (camera-pos)) + ) ) - ) - ) - (< - 60397978000.0 - (vector-vector-distance-squared - (the-as vector (-> obj root-override root-prim prim-core)) - (camera-pos) - ) - ) - ) ) (defstate hidden-other (process-taskable) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior process-taskable) - process-taskable-hide-handler - ) + (function process int symbol event-message-block object :behavior process-taskable) + process-taskable-hide-handler + ) :enter - (the-as - (function none :behavior process-taskable) - process-taskable-hide-enter - ) + (the-as (function none :behavior process-taskable) process-taskable-hide-enter) :exit - (behavior () - (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other)) - (none) - ) + (behavior () (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other)) (none)) :trans (behavior () - (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (cond - ((-> self been-kicked) - (go-virtual idle) - ) - ((TODO-RENAME-50 self) - (if (should-display? self) - (go-virtual idle) - (go-virtual hidden) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (process-entity-status! self (entity-perm-status bit-3) #f) + ) + (cond + ((-> self been-kicked) + (go-virtual idle) + ) + ((TODO-RENAME-50 self) + (if (should-display? self) + (go-virtual idle) + (go-virtual hidden) + ) + ) ) - ) + (none) ) - (none) - ) :code (the-as (function none :behavior process-taskable) anim-loop) ) @@ -1059,95 +860,72 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as shadow-geo (cond - ((= v1-0 'shadow) - (the-as shadow-geo (cond - ((-> arg3 param 0) - (let - ((v0-0 (-> self shadow-backup))) - (set! (-> self draw shadow) v0-0) - v0-0 - ) - ) - (else - (set! (-> self draw shadow) #f) - (the-as shadow-geo #f) - ) - ) - ) - ) - ((= v1-0 'shadow-min-max) - (let ((v1-5 (-> self draw shadow-ctrl))) - (let ((a0-5 v1-5)) - (set! - (-> a0-5 settings bot-plane w) - (- (the-as float (-> arg3 param 0))) + (let ((v1-0 arg2)) + (the-as shadow-geo (cond + ((= v1-0 'shadow) + (the-as shadow-geo (cond + ((-> arg3 param 0) + (let ((v0-0 (-> self shadow-backup))) + (set! (-> self draw shadow) v0-0) + v0-0 + ) + ) + (else + (set! (-> self draw shadow) #f) + (the-as shadow-geo #f) + ) + ) + ) + ) + ((= v1-0 'shadow-min-max) + (let ((v1-5 (-> self draw shadow-ctrl))) + (let ((a0-5 v1-5)) + (set! (-> a0-5 settings bot-plane w) (- (the-as float (-> arg3 param 0)))) + ) + 0 + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> arg3 param 1)))) + ) + (the-as shadow-geo 0) + ) + ((= v1-0 'end-mode) + (the-as shadow-geo (if (should-display? self) + (the-as shadow-geo (go-virtual idle)) + (the-as shadow-geo (go-virtual hidden)) + ) + ) ) ) - 0 - (set! - (-> v1-5 settings top-plane w) - (- (the-as float (-> arg3 param 1))) - ) - ) - (the-as shadow-geo 0) - ) - ((= v1-0 'end-mode) - (the-as shadow-geo (if (should-display? self) - (the-as - shadow-geo - (go-virtual idle) - ) - (the-as - shadow-geo - (go-virtual hidden) - ) - ) - ) - ) - ) - ) + ) + ) ) - ) :enter (behavior ((arg0 handle)) - (logior! (-> self skel status) 8) - (logclear! (-> self mask) (process-mask actor-pause)) - (set-vector! - (-> self draw bounds) - 0.0 - (-> self draw-bounds-y-offset) - 0.0 - (-> self draw bounds w) + (logior! (-> self skel status) 8) + (logclear! (-> self mask) (process-mask actor-pause)) + (set-vector! (-> self draw bounds) 0.0 (-> self draw-bounds-y-offset) 0.0 (-> self draw bounds w)) + (none) ) - (none) - ) :exit (behavior () - (set! (-> self skel status) (logand -41 (-> self skel status))) - (logior! (-> self mask) (process-mask actor-pause)) - (let ((v1-6 (-> self entity extra trans))) - (if v1-6 - (set! (-> self root-override trans quad) (-> v1-6 quad)) - ) + (set! (-> self skel status) (logand -41 (-> self skel status))) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((v1-6 (-> self entity extra trans))) + (if v1-6 + (set! (-> self root-override trans quad) (-> v1-6 quad)) + ) + ) + (ja-channel-set! 0) + (none) ) - (ja-channel-set! 0) - (none) - ) :trans - (behavior () - (draw-npc-shadow self) - ((-> self cur-trans-hook)) - (none) - ) + (behavior () (draw-npc-shadow self) ((-> self cur-trans-hook)) (none)) :code (behavior ((arg0 handle)) - (clone-anim arg0 (-> self center-joint-index) #t "") - (format #t "ERROR: handle invalid while ~S is cloning~%" (-> self name)) - (go-virtual hidden) - (none) - ) + (clone-anim arg0 (-> self center-joint-index) #t "") + (format #t "ERROR: handle invalid while ~S is cloning~%" (-> self name)) + (go-virtual hidden) + (none) + ) ) (defmethod target-above-threshold? process-taskable ((obj process-taskable)) @@ -1158,359 +936,253 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'attack) - (the-as symbol (when (-> self bounce-away) - (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) (the-as uint #f)) - (let - ((v1-4 - (new 'static 'attack-info :mask #xc0) - ) - ) - (set! (-> v1-4 shove-back) 12288.0) - (set! (-> v1-4 shove-up) 4096.0) - (set! - (-> a1-3 param 1) - (the-as uint v1-4) - ) - ) - (the-as - symbol - (send-event-function arg0 a1-3) - ) - ) - ) - ) - ) - ((= v1-0 'touch) - (the-as - symbol - (dummy-55 - (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) - 0.7 - 6144.0 - 16384.0 - ) - ) - ) - ((= v1-0 'clone) - (the-as - symbol - (go-virtual be-clone (the-as handle (-> arg3 param 0))) - ) - ) - ((= v1-0 'play-anim) - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v0-0 #t)) - (set! (-> self been-kicked) v0-0) - v0-0 - ) - ) - ((= v1-0 'hidden-other) - (the-as symbol (go-virtual hidden-other)) - ) - ) - ) - ) - ) - :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (process-taskable-clean-up-after-talking) - (none) - ) - :exit - (behavior () - (cond - ((or - (= (-> self next-state name) 'dead-state) - (= (-> self next-state name) 'idle) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (else - (kill-current-level-hint '() '() 'exit) - (logior! (-> self skel status) 1) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (set-setting! *setting-control* self 'border-mode #f 0.0 0) - (set-setting! - *setting-control* - self - 'talking - (the-as symbol (process->ppointer self)) - 0.0 - 0 - ) - (copy-settings-from-target! *setting-control*) - ) - ) - (none) - ) - :trans - (behavior () - (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (cond - ((not *target*) - ) - ((not (-> self will-talk)) - (if - (>= - (- (-> *display* game-frame-counter) (the-as int (-> self last-talk))) - 3000 - ) - (set! (-> self will-talk) #t) - ) - ) - ((begin - (dummy-46 self) - (and - (not - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) - ) - (< - (-> (target-pos 0) y) - (+ 8192.0 (-> self root-override root-prim prim-core world-sphere y)) - ) - (< - (vector-vector-distance - (target-pos 0) - (the-as vector (-> self root-override root-prim prim-core)) - ) - 32768.0 - ) - (= (-> *level* loading-level) (-> *level* level-default)) - (not (movie?)) - (not (level-hint-displayed?)) - (none-reserved? *art-control*) - (not *progress-process*) - (and - (not (handle->process (-> *game-info* other-camera-handle))) - (close-anim-file! self) - ) - ) - ) - (first-any (-> self tasks) #t) - (when (target-above-threshold? self) - (case (current-status (-> self tasks)) - (((task-status need-hint) - (task-status need-introduction) - (task-status need-reminder) - (task-status need-reminder-a) - (task-status need-reward-speech) - ) - (kill-current-level-hint '() '(sidekick voicebox ambient) 'exit) - (level-hint-surpress!) - (hide-hud) - (when (and (hud-hidden?) (can-grab-display? self)) - (let - ((gp-1 - (new - 'stack - 'font-context - *font-default-matrix* - 32 - 140 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-57 gp-1)) - (set! (-> v1-57 width) (the float 440)) - ) - (let ((v1-58 gp-1)) - (set! (-> v1-58 height) (the float 60)) - ) - (let ((v1-59 gp-1)) - (set! (-> v1-59 scale) 0.9) - ) - (set! (-> gp-1 flags) (font-flags shadow kerning left large)) - (print-game-text - (lookup-text! - *common-text* - (the-as game-text-id (-> self talk-message)) - #f - ) - gp-1 - #f - 128 - 22 - ) + (let ((v1-0 arg2)) + (the-as + object + (cond + ((= v1-0 'attack) + (the-as symbol (when (-> self bounce-away) + (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) (the-as uint #f)) + (let ((v1-4 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-4 shove-back) 12288.0) + (set! (-> v1-4 shove-up) 4096.0) + (set! (-> a1-3 param 1) (the-as uint v1-4)) + ) + (the-as symbol (send-event-function arg0 a1-3)) + ) + ) + ) ) - (when - (and - (logtest? - (-> *cpad-list* cpads 0 button0-rel 0) - (pad-buttons circle) + ((= v1-0 'touch) + (the-as + symbol + (dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0) ) - (process-grab? *target*) - ) - (logclear! - (-> *cpad-list* cpads 0 button0-abs 0) - (pad-buttons circle) - ) - (logclear! - (-> *cpad-list* cpads 0 button0-rel 0) - (pad-buttons circle) - ) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (go-virtual play-anim) + ) + ((= v1-0 'clone) + (the-as symbol (go-virtual be-clone (the-as handle (-> arg3 param 0)))) + ) + ((= v1-0 'play-anim) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v0-0 #t)) + (set! (-> self been-kicked) v0-0) + v0-0 + ) + ) + ((= v1-0 'hidden-other) + (the-as symbol (go-virtual hidden-other)) ) ) + ) + ) + ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (process-taskable-clean-up-after-talking) + (none) + ) + :exit + (behavior () + (cond + ((or (= (-> self next-state name) 'dead-state) (= (-> self next-state name) 'idle)) + (process-entity-status! self (entity-perm-status bit-3) #f) + ) + (else + (kill-current-level-hint '() '() 'exit) + (logior! (-> self skel status) 1) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (set-setting! *setting-control* self 'border-mode #f 0.0 0) + (set-setting! *setting-control* self 'talking (the-as symbol (process->ppointer self)) 0.0 0) + (copy-settings-from-target! *setting-control*) + ) + ) + (none) + ) + :trans + (behavior () + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + ) + (cond + ((not *target*) + ) + ((not (-> self will-talk)) + (if (>= (- (-> *display* game-frame-counter) (the-as int (-> self last-talk))) 3000) + (set! (-> self will-talk) #t) + ) + ) + ((begin + (dummy-46 self) + (and + (not + (and + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + (< (-> (target-pos 0) y) (+ 8192.0 (-> self root-override root-prim prim-core world-sphere y))) + (< (vector-vector-distance (target-pos 0) (the-as vector (-> self root-override root-prim prim-core))) + 32768.0 + ) + (= (-> *level* loading-level) (-> *level* level-default)) + (not (movie?)) + (not (level-hint-displayed?)) + (none-reserved? *art-control*) + (not *progress-process*) + (and (not (handle->process (-> *game-info* other-camera-handle))) (close-anim-file! self)) + ) + ) + (first-any (-> self tasks) #t) + (when (target-above-threshold? self) + (case (current-status (-> self tasks)) + (((task-status need-hint) + (task-status need-introduction) + (task-status need-reminder) + (task-status need-reminder-a) + (task-status need-reward-speech) + ) + (kill-current-level-hint '() '(sidekick voicebox ambient) 'exit) + (level-hint-surpress!) + (hide-hud) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((gp-1 + (new 'stack 'font-context *font-default-matrix* 32 140 0.0 (font-color default) (font-flags shadow kerning)) + ) + ) + (let ((v1-57 gp-1)) + (set! (-> v1-57 width) (the float 440)) + ) + (let ((v1-58 gp-1)) + (set! (-> v1-58 height) (the float 60)) + ) + (let ((v1-59 gp-1)) + (set! (-> v1-59 scale) 0.9) + ) + (set! (-> gp-1 flags) (font-flags shadow kerning left large)) + (print-game-text (lookup-text! *common-text* (the-as game-text-id (-> self talk-message)) #f) gp-1 #f 128 22) + ) + (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (go-virtual play-anim) + ) + ) + ) + ) ) ) ) - ) - ) - (if (= (-> *level* loading-level) (-> *level* level-default)) - (dummy-33 self) - ) - (draw-npc-shadow self) - (when - (and - (-> self been-kicked) - (and - (not *progress-process*) - (process-grab? *target*) - (not (handle->process (-> *game-info* other-camera-handle))) + (if (= (-> *level* loading-level) (-> *level* level-default)) + (dummy-33 self) + ) + (draw-npc-shadow self) + (when (and (-> self been-kicked) (and + (not *progress-process*) + (process-grab? *target*) + (not (handle->process (-> *game-info* other-camera-handle))) + ) + ) + (set! (-> self been-kicked) #f) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (go-virtual play-anim) ) - ) - (set! (-> self been-kicked) #f) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (go-virtual play-anim) + ((-> self cur-trans-hook)) + (none) ) - ((-> self cur-trans-hook)) - (none) - ) :code process-taskable-anim-loop :post (behavior () - (when *target* - (when (!= (-> self neck-joint-index) -1) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (-> self node-list data (-> self neck-joint-index))) - (if *target* - (look-at-enemy! (-> *target* neck) gp-0 'nothing self) - ) + (when *target* + (when (!= (-> self neck-joint-index) -1) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> self node-list data (-> self neck-joint-index))) + (if *target* + (look-at-enemy! (-> *target* neck) gp-0 'nothing self) + ) + ) + ) ) - ) + (transform-post) + (none) ) - (transform-post) - (none) - ) ) -(defmethod - initialize-collision - process-taskable - ((obj process-taskable) (arg0 int) (arg1 vector)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) arg0) - (set-vector! - (-> s4-0 local-sphere) - (-> arg1 x) - (-> arg1 y) - (-> arg1 z) - (-> arg1 w) - ) - (set-root-prim! s5-0 s4-0) +(defmethod initialize-collision process-taskable ((obj process-taskable) (arg0 int) (arg1 vector)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) arg0) + (set-vector! (-> s4-0 local-sphere) (-> arg1 x) (-> arg1 y) (-> arg1 z) (-> arg1 w)) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) -(defmethod - dummy-40 - process-taskable - ((obj process-taskable) - (arg0 object) - (arg1 skeleton-group) - (arg2 int) - (arg3 int) - (arg4 vector) - (arg5 int) - ) +(defmethod dummy-40 process-taskable ((obj process-taskable) (arg0 object) (arg1 skeleton-group) (arg2 int) (arg3 int) (arg4 vector) (arg5 int)) (let ((s3-0 arg2) (s4-0 arg3) (s0-0 arg4) (s5-0 arg5) ) - (stack-size-set! (-> obj main-thread) 512) - (initialize-collision obj s3-0 s0-0) - (process-drawable-from-entity! obj (the-as entity-actor arg0)) - (let* ((a0-4 obj) - (t9-3 (method-of-object a0-4 initialize-skeleton)) - (a2-2 '()) - (a1-4 arg1) - ) - (t9-3 a0-4 a1-4 a2-2) - (set! (-> obj shadow-backup) (-> obj draw shadow)) - (logior! (-> obj skel status) 256) - (set! (-> obj root-override pause-adjust-distance) -122880.0) - (set! (-> obj fuel-cell-anim) (fuel-cell-pick-anim obj)) - (set! (-> obj draw origin-joint-index) (the-as uint s3-0)) - (set! (-> obj draw shadow-joint-index) (the-as uint s3-0)) - (set! (-> obj center-joint-index) s3-0) - (set! (-> obj draw-bounds-y-offset) (-> obj draw bounds y)) - (set! (-> obj have-flava) #f) - (set! (-> obj music) #f) - (set! (-> obj have-music) #f) - (set! (-> obj cam-joint-index) s4-0) - (set! (-> obj cell-x) (the-as handle #f)) - (set! (-> obj cell-for-task) (game-task none)) - (set! (-> obj camera) (the-as handle #f)) - (set! (-> obj will-talk) #t) - (set! (-> obj talk-message) (the-as uint 260)) - (set! (-> obj last-talk) (the-as uint 0)) - (set! (-> obj bounce-away) #t) - (set! (-> obj been-kicked) #f) - (set! (-> obj neck-joint-index) s5-0) - (set! (-> obj cur-trans-hook) nothing) - (dummy-9 - (-> obj ambient) - (the-as vector a1-4) - (the-as int a2-2) - (the-as float arg2) - (the-as process-drawable arg3) - ) + (stack-size-set! (-> obj main-thread) 512) + (initialize-collision obj s3-0 s0-0) + (process-drawable-from-entity! obj (the-as entity-actor arg0)) + (let* ((a0-4 obj) + (t9-3 (method-of-object a0-4 initialize-skeleton)) + (a2-2 '()) + (a1-4 arg1) + ) + (t9-3 a0-4 a1-4 a2-2) + (set! (-> obj shadow-backup) (-> obj draw shadow)) + (logior! (-> obj skel status) 256) + (set! (-> obj root-override pause-adjust-distance) -122880.0) + (set! (-> obj fuel-cell-anim) (fuel-cell-pick-anim obj)) + (set! (-> obj draw origin-joint-index) (the-as uint s3-0)) + (set! (-> obj draw shadow-joint-index) (the-as uint s3-0)) + (set! (-> obj center-joint-index) s3-0) + (set! (-> obj draw-bounds-y-offset) (-> obj draw bounds y)) + (set! (-> obj have-flava) #f) + (set! (-> obj music) #f) + (set! (-> obj have-music) #f) + (set! (-> obj cam-joint-index) s4-0) + (set! (-> obj cell-x) (the-as handle #f)) + (set! (-> obj cell-for-task) (game-task none)) + (set! (-> obj camera) (the-as handle #f)) + (set! (-> obj will-talk) #t) + (set! (-> obj talk-message) (the-as uint 260)) + (set! (-> obj last-talk) (the-as uint 0)) + (set! (-> obj bounce-away) #t) + (set! (-> obj been-kicked) #f) + (set! (-> obj neck-joint-index) s5-0) + (set! (-> obj cur-trans-hook) nothing) + (dummy-9 + (-> obj ambient) + (the-as vector a1-4) + (the-as int a2-2) + (the-as float arg2) + (the-as process-drawable arg3) + ) + ) ) - ) (set! (-> obj event-hook) (-> (method-of-object obj idle) event)) - (set! - (-> obj draw shadow-ctrl) - (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0) - ) + (set! (-> obj draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0)) (dummy-52 obj) 0 (none) @@ -1518,16 +1190,16 @@ (defmethod dummy-42 process-taskable ((obj process-taskable)) (cond - ((not (should-display? obj)) - (go (method-of-object obj hidden)) + ((not (should-display? obj)) + (go (method-of-object obj hidden)) + ) + ((= (current-status (-> obj tasks)) (task-status need-resolution)) + (go (method-of-object obj give-cell)) + ) + (else + (go (method-of-object obj idle)) + ) ) - ((= (current-status (-> obj tasks)) (task-status need-resolution)) - (go (method-of-object obj give-cell)) - ) - (else - (go (method-of-object obj idle)) - ) - ) (none) ) @@ -1535,336 +1207,209 @@ (the-as symbol 0) ) -(defmethod - dummy-9 - ambient-control - ((obj ambient-control) - (arg0 vector) - (arg1 int) - (arg2 float) - (arg3 process-drawable) - ) +(defmethod dummy-9 ambient-control ((obj ambient-control) (arg0 vector) (arg1 int) (arg2 float) (arg3 process-drawable)) (set! (-> obj last-ambient-time) (-> *display* game-frame-counter)) 0 (none) ) -(defmethod - TODO-RENAME-10 - ambient-control - ((obj ambient-control) - (arg0 vector) - (arg1 int) - (arg2 float) - (arg3 process-drawable) - ) - (when - (< (- (-> *display* game-frame-counter) (-> obj last-ambient-time)) arg1) - (set! arg0 (the-as vector #f)) - (goto cfg-6) - ) +(defmethod TODO-RENAME-10 ambient-control ((obj ambient-control) (arg0 vector) (arg1 int) (arg2 float) (arg3 process-drawable)) + (when (< (- (-> *display* game-frame-counter) (-> obj last-ambient-time)) arg1) + (set! arg0 (the-as vector #f)) + (goto cfg-6) + ) (vector-for-ambient arg3 arg0) (when (< arg2 (vector-length arg0)) - (set! arg0 (the-as vector #f)) - (goto cfg-6) - ) + (set! arg0 (the-as vector #f)) + (goto cfg-6) + ) (label cfg-6) arg0 ) -(defmethod - play-ambient - ambient-control - ((obj ambient-control) (arg0 string) (arg1 symbol) (arg2 vector)) - (when - (and - (not (string= arg0 (-> obj last-ambient))) - (or - arg1 - (can-hint-be-played? - (game-text-id one) - (the-as entity #f) - (the-as string #f) - ) - ) - (= (-> *level* loading-level) (-> *level* level-default)) - (ambient-hint-spawn arg0 arg2 *entity-pool* 'ambient) +(defmethod play-ambient ambient-control ((obj ambient-control) (arg0 string) (arg1 symbol) (arg2 vector)) + (when (and + (not (string= arg0 (-> obj last-ambient))) + (or arg1 (can-hint-be-played? (game-text-id one) (the-as entity #f) (the-as string #f))) + (= (-> *level* loading-level) (-> *level* level-default)) + (ambient-hint-spawn arg0 arg2 *entity-pool* 'ambient) + ) + (set! (-> obj last-ambient-time) (-> *display* game-frame-counter)) + (set! (-> obj last-ambient) arg0) + (return #t) ) - (set! (-> obj last-ambient-time) (-> *display* game-frame-counter)) - (set! (-> obj last-ambient) arg0) - (return #t) - ) #f ) (defun vector-for-ambient ((arg0 process-drawable) (arg1 vector)) (if *target* - (vector-! arg1 (target-pos 0) (-> arg0 root trans)) - (vector-! arg1 (camera-pos) (-> arg0 root trans)) - ) + (vector-! arg1 (target-pos 0) (-> arg0 root trans)) + (vector-! arg1 (camera-pos) (-> arg0 root trans)) + ) arg1 ) (defun othercam-calc ((arg0 float)) (let ((f0-3 (* 2.0 (atan (/ 14.941477 (* 20.3 arg0)) 1.0)))) - (set! (-> *camera-other-fov* data) f0-3) - f0-3 - ) + (set! (-> *camera-other-fov* data) f0-3) + f0-3 + ) ) (defstate othercam-running (othercam) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-0 object)) - (case arg2 - (('die) - (set! v0-0 #t) - (set! (-> self die?) (the-as symbol v0-0)) - v0-0 - ) - (('joint) - (let ((t9-0 type-type?) - (v1-1 (-> arg3 param 0)) - ) - (cond - ((t9-0 (rtype-of v1-1) string) - (let - ((v1-8 - (dummy-10 - (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) - (the-as string (-> arg3 param 0)) - (the-as type #f) + (local-vars (v0-0 object)) + (case arg2 + (('die) + (set! v0-0 #t) + (set! (-> self die?) (the-as symbol v0-0)) + v0-0 + ) + (('joint) + (let ((t9-0 type-type?) + (v1-1 (-> arg3 param 0)) + ) + (cond + ((t9-0 (rtype-of v1-1) string) + (let ((v1-8 + (dummy-10 + (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) + (the-as string (-> arg3 param 0)) + (the-as type #f) + ) + ) + ) + (when v1-8 + (set! v0-0 (+ (-> v1-8 number) 1)) + (set! (-> self cam-joint-index) (the-as int v0-0)) + v0-0 + ) + ) + ) + ((zero? (logand (-> arg3 param 0) 7)) + (set! v0-0 (-> arg3 param 0)) + (set! (-> self cam-joint-index) (the-as int v0-0)) + v0-0 ) ) - ) - (when v1-8 - (set! v0-0 (+ (-> v1-8 number) 1)) - (set! (-> self cam-joint-index) (the-as int v0-0)) - v0-0 - ) ) - ) - ((zero? (logand (-> arg3 param 0) 7)) - (set! v0-0 (-> arg3 param 0)) - (set! (-> self cam-joint-index) (the-as int v0-0)) - v0-0 - ) + ) + (('mask) + (set! v0-0 (-> arg3 param 0)) + (set! (-> self mask-to-clear) (the-as uint v0-0)) + v0-0 ) ) - ) - (('mask) - (set! v0-0 (-> arg3 param 0)) - (set! (-> self mask-to-clear) (the-as uint v0-0)) - v0-0 - ) ) - ) :enter (behavior () - (hide-hud-quick) - (case (-> self spooling?) - (('logo) - ) - (else - (push-setting! - *setting-control* - self - 'process-mask - 'set - 0.0 - (-> self mask-to-clear) - ) - (push-setting! - *setting-control* - self - 'movie - (process->ppointer self) - 0.0 - 0 - ) - (if (not (-> self border-value)) - (push-setting! - *setting-control* - self - 'border-mode - (-> self border-value) - 0.0 - 0 + (hide-hud-quick) + (case (-> self spooling?) + (('logo) ) - ) - ) - ) - (set! (-> self had-valid-frame) #f) - (let ((gp-0 (-> self hand process 0))) - (vector<-cspace! - (-> self old-pos) - (-> - (the-as process-taskable gp-0) - node-list - data - (-> self cam-joint-index) - ) - ) - (let - ((v1-19 - (-> - (the-as process-taskable gp-0) - node-list - data - (-> self cam-joint-index) - bone - transform + (else + (push-setting! *setting-control* self 'process-mask 'set 0.0 (-> self mask-to-clear)) + (push-setting! *setting-control* self 'movie (process->ppointer self) 0.0 0) + (if (not (-> self border-value)) + (push-setting! *setting-control* self 'border-mode (-> self border-value) 0.0 0) + ) ) - ) ) - (vector-normalize-copy! (-> self old-mat-z) (-> v1-19 vector 2) -1.0) - ) + (set! (-> self had-valid-frame) #f) + (let ((gp-0 (-> self hand process 0))) + (vector<-cspace! + (-> self old-pos) + (-> (the-as process-taskable gp-0) node-list data (-> self cam-joint-index)) + ) + (let ((v1-19 (-> (the-as process-taskable gp-0) node-list data (-> self cam-joint-index) bone transform))) + (vector-normalize-copy! (-> self old-mat-z) (-> v1-19 vector 2) -1.0) + ) + ) + (copy-settings-from-target! *setting-control*) + (none) ) - (copy-settings-from-target! *setting-control*) - (none) - ) :exit (behavior () - (clear-pending-settings-from-process *setting-control* self 'process-mask) - (copy-settings-from-target! *setting-control*) - (none) - ) + (clear-pending-settings-from-process *setting-control* self 'process-mask) + (copy-settings-from-target! *setting-control*) + (none) + ) :code (behavior () - (while #t - (let ((s2-0 (-> self hand process 0))) - (when (not s2-0) - (format #t "ERROR: othercam parent invalid~%") - (deactivate self) - ) - (set! - (-> *camera-other-root* quad) - (-> (the-as process-taskable s2-0) root-override trans quad) - ) - (let - ((s4-0 - (-> - (the-as process-taskable s2-0) - node-list - data - (-> self cam-joint-index) - bone - transform - ) - ) - (s3-0 - (-> - (the-as process-taskable s2-0) - node-list - data - (-> self cam-joint-index) - bone - scale - ) - ) - (gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s1-0 - (or - (!= (-> self spooling?) #t) - (logtest? (-> (the-as process-taskable s2-0) skel status) 32) - ) - ) - ) - (vector<-cspace! - s5-0 - (-> - (the-as process-taskable s2-0) - node-list - data - (-> self cam-joint-index) - ) - ) - (vector-normalize-copy! gp-0 (-> s4-0 vector 2) -1.0) - (when s1-0 - (when (not (-> self had-valid-frame)) - (set! (-> self had-valid-frame) #t) - (set! (-> self old-pos quad) (-> s5-0 quad)) - (set! (-> self old-mat-z quad) (-> gp-0 quad)) - ) - (when #t - (set! (-> *camera-other-trans* quad) (-> s5-0 quad)) - (vector-normalize-copy! - (the-as vector (-> *camera-other-matrix* vector)) - (the-as vector (-> s4-0 vector)) - -1.0 - ) - (set! (-> *camera-other-matrix* vector 0 w) 0.0) - (vector-normalize-copy! - (-> *camera-other-matrix* vector 1) - (-> s4-0 vector 1) - 1.0 - ) - (set! (-> *camera-other-matrix* vector 1 w) 0.0) - (vector-normalize-copy! - (-> *camera-other-matrix* vector 2) - (-> s4-0 vector 2) - -1.0 - ) - (set! (-> *camera-other-matrix* vector 2 w) 0.0) - (vector-reset! (-> *camera-other-matrix* vector 3)) - (othercam-calc (-> s3-0 x)) - ) - (set! *camera-look-through-other* 2) - (set! (-> self old-pos quad) (-> s5-0 quad)) - (set! (-> self old-mat-z quad) (-> gp-0 quad)) - ) - ) - ) - (suspend) - (let ((a0-25 (-> self hand process 0))) - (when - (or - (-> self die?) - (and (not (-> self survive-anim-end?)) (ja-anim-done? a0-25)) - ) - (let ((gp-1 (-> *display* base-frame-counter))) - (while - (and - (< (- (-> *display* base-frame-counter) gp-1) #x4650) - (or - (and - (-> self entity) - (not - (is-object-visible? - (-> self entity extra level) - (-> self entity extra vis-id) - ) - ) - ) - (< - 81920.0 - (vector-vector-distance (camera-pos) (-> *math-camera* trans)) - ) + (while #t + (let ((s2-0 (-> self hand process 0))) + (when (not s2-0) + (format #t "ERROR: othercam parent invalid~%") + (deactivate self) + ) + (set! (-> *camera-other-root* quad) (-> (the-as process-taskable s2-0) root-override trans quad)) + (let ((s4-0 (-> (the-as process-taskable s2-0) node-list data (-> self cam-joint-index) bone transform)) + (s3-0 (-> (the-as process-taskable s2-0) node-list data (-> self cam-joint-index) bone scale)) + (gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s1-0 (or (!= (-> self spooling?) #t) (logtest? (-> (the-as process-taskable s2-0) skel status) 32))) + ) + (vector<-cspace! s5-0 (-> (the-as process-taskable s2-0) node-list data (-> self cam-joint-index))) + (vector-normalize-copy! gp-0 (-> s4-0 vector 2) -1.0) + (when s1-0 + (when (not (-> self had-valid-frame)) + (set! (-> self had-valid-frame) #t) + (set! (-> self old-pos quad) (-> s5-0 quad)) + (set! (-> self old-mat-z quad) (-> gp-0 quad)) + ) + (when #t + (set! (-> *camera-other-trans* quad) (-> s5-0 quad)) + (vector-normalize-copy! + (the-as vector (-> *camera-other-matrix* vector)) + (the-as vector (-> s4-0 vector)) + -1.0 + ) + (set! (-> *camera-other-matrix* vector 0 w) 0.0) + (vector-normalize-copy! (-> *camera-other-matrix* vector 1) (-> s4-0 vector 1) 1.0) + (set! (-> *camera-other-matrix* vector 1 w) 0.0) + (vector-normalize-copy! (-> *camera-other-matrix* vector 2) (-> s4-0 vector 2) -1.0) + (set! (-> *camera-other-matrix* vector 2 w) 0.0) + (vector-reset! (-> *camera-other-matrix* vector 3)) + (othercam-calc (-> s3-0 x)) + ) + (set! *camera-look-through-other* 2) + (set! (-> self old-pos quad) (-> s5-0 quad)) + (set! (-> self old-mat-z quad) (-> gp-0 quad)) + ) + ) + ) + (suspend) + (let ((a0-25 (-> self hand process 0))) + (when (or (-> self die?) (and (not (-> self survive-anim-end?)) (ja-anim-done? a0-25))) + (let ((gp-1 (-> *display* base-frame-counter))) + (while (and + (< (- (-> *display* base-frame-counter) gp-1) #x4650) + (or + (and (-> self entity) (not (is-object-visible? (-> self entity extra level) (-> self entity extra vis-id)))) + (< 81920.0 (vector-vector-distance (camera-pos) (-> *math-camera* trans))) + ) + ) + (suspend) + ) + ) + (deactivate self) ) - ) - (suspend) ) - ) - (deactivate self) ) - ) + (none) ) - (none) - ) ) -(defbehavior - othercam-init-by-other othercam - ((arg0 process-taskable) (arg1 symbol) (arg2 symbol) (arg3 symbol)) +(defbehavior othercam-init-by-other othercam ((arg0 process-taskable) (arg1 symbol) (arg2 symbol) (arg3 symbol)) (set! (-> self spooling?) arg3) - (case (-> self spooling?) - (('logo) + (case (-> self spooling?) + (('logo) ) - (else - (set! (-> *game-info* other-camera-handle) (process->handle self)) + (else + (set! (-> *game-info* other-camera-handle) (process->handle self)) + ) ) - ) (set! (-> self hand) (process->handle arg0)) (set! (-> self cam-joint-index) (the-as int arg1)) (logclear! (-> self mask) (process-mask pause menu actor-pause)) @@ -1880,23 +1425,19 @@ (defmethod draw-npc-shadow process-taskable ((obj process-taskable)) (let ((gp-0 (-> obj draw shadow-ctrl))) - (cond - ((and - (-> obj draw shadow) - (zero? (-> obj draw cur-lod)) - (logtest? (-> obj draw status) 8) + (cond + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + (dummy-15 gp-0 (-> obj draw origin) -4096.0 4096.0 32768.0) + (dummy-14 gp-0) + ) + (else + (let ((v1-10 gp-0)) + (logior! (-> v1-10 settings flags) 32) + ) + 0 + ) ) - (dummy-15 gp-0 (-> obj draw origin) -4096.0 4096.0 32768.0) - (dummy-14 gp-0) - ) - (else - (let ((v1-10 gp-0)) - (logior! (-> v1-10 settings flags) 32) - ) - 0 - ) ) - ) (none) ) diff --git a/goal_src/engine/gfx/shrub/shrubbery-h.gc b/goal_src/engine/gfx/shrub/shrubbery-h.gc index a038ac264d..a7e6eec276 100644 --- a/goal_src/engine/gfx/shrub/shrubbery-h.gc +++ b/goal_src/engine/gfx/shrub/shrubbery-h.gc @@ -95,8 +95,8 @@ ) (deftype prototype-shrubbery (drawable-inline-array) - ((data generic-shrub-fragment 1 :inline :offset-assert 32) - (pad uint32 :offset-assert 64) + ((data shrubbery 1 :inline :offset-assert 32) + (pad uint32) ) :method-count-assert 18 :size-assert #x44 diff --git a/goal_src/engine/gfx/tfrag/tfrag-methods.gc b/goal_src/engine/gfx/tfrag/tfrag-methods.gc index 660821c591..ef14b60f6b 100644 --- a/goal_src/engine/gfx/tfrag/tfrag-methods.gc +++ b/goal_src/engine/gfx/tfrag/tfrag-methods.gc @@ -717,7 +717,7 @@ ;; definition for method 10 of type drawable-tree-tfrag ;; INFO: Return type mismatch drawable-tree-tfrag vs none. -(defmethod draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable-tree-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -731,7 +731,7 @@ ;; definition for method 10 of type drawable-tree-trans-tfrag ;; INFO: Return type mismatch drawable-tree-trans-tfrag vs none. -(defmethod draw drawable-tree-trans-tfrag ((obj drawable-tree-trans-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-trans-tfrag ((obj drawable-tree-trans-tfrag) (arg0 drawable-tree-trans-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* trans-tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -745,7 +745,7 @@ ;; definition for method 10 of type drawable-tree-dirt-tfrag ;; INFO: Return type mismatch drawable-tree-dirt-tfrag vs none. -(defmethod draw drawable-tree-dirt-tfrag ((obj drawable-tree-dirt-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-dirt-tfrag ((obj drawable-tree-dirt-tfrag) (arg0 drawable-tree-dirt-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* dirt-tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -759,7 +759,7 @@ ;; definition for method 10 of type drawable-tree-ice-tfrag ;; INFO: Return type mismatch drawable-tree-ice-tfrag vs none. -(defmethod draw drawable-tree-ice-tfrag ((obj drawable-tree-ice-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-ice-tfrag ((obj drawable-tree-ice-tfrag) (arg0 drawable-tree-ice-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* ice-tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -773,7 +773,7 @@ ;; definition for method 10 of type drawable-tree-lowres-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-tfrag vs none. -(defmethod draw drawable-tree-lowres-tfrag ((obj drawable-tree-lowres-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-lowres-tfrag ((obj drawable-tree-lowres-tfrag) (arg0 drawable-tree-lowres-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* lowres-tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -790,7 +790,7 @@ (defmethod draw drawable-tree-lowres-trans-tfrag - ((obj drawable-tree-lowres-trans-tfrag) (arg0 drawable) (arg1 display-frame)) + ((obj drawable-tree-lowres-trans-tfrag) (arg0 drawable-tree-lowres-trans-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* lowres-trans-tfrag-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) (a1-5 (-> *level* level a1-2)) diff --git a/goal_src/engine/gfx/tie/tie-h.gc b/goal_src/engine/gfx/tie/tie-h.gc index 00bcf282e8..fbc5956d1c 100644 --- a/goal_src/engine/gfx/tie/tie-h.gc +++ b/goal_src/engine/gfx/tie/tie-h.gc @@ -59,10 +59,9 @@ :flag-assert #x1200000024 ) - (deftype prototype-tie (drawable-inline-array) - ((data instance-tie 1 :inline :offset-assert 32) - (pad uint32 :offset-assert 96) + ((data tie-fragment 1 :inline :offset-assert 32) + (pad uint32) ) :method-count-assert 18 :size-assert #x64 diff --git a/goal_src/engine/gfx/vis/bsp-h.gc b/goal_src/engine/gfx/vis/bsp-h.gc index 0f9295ea7f..bf89ac849e 100644 --- a/goal_src/engine/gfx/vis/bsp-h.gc +++ b/goal_src/engine/gfx/vis/bsp-h.gc @@ -137,8 +137,7 @@ (none) ) -(define-extern map-bsp-tree (function (function bsp-node none) bsp-header bsp-node none)) -(defun map-bsp-tree ((arg0 (function bsp-node none)) (arg1 bsp-header) (arg2 bsp-node)) +(defun-recursive map-bsp-tree none ((arg0 (function bsp-node none)) (arg1 bsp-header) (arg2 bsp-node)) "Recursively apply arg0 to all nodes in the bsp tree" (cond ((zero? arg2) diff --git a/goal_src/engine/gfx/vis/bsp.gc b/goal_src/engine/gfx/vis/bsp.gc index 4118cf176d..f9bc8ba54e 100644 --- a/goal_src/engine/gfx/vis/bsp.gc +++ b/goal_src/engine/gfx/vis/bsp.gc @@ -196,7 +196,7 @@ (define *test-shrub* 0) ;; unused. -(defmethod draw bsp-header ((obj bsp-header) (other-draw drawable) (disp-frame display-frame)) +(defmethod draw bsp-header ((obj bsp-header) (other-draw bsp-header) (arg1 display-frame)) "Draw the level" (local-vars (a3-4 uint128) (a3-5 uint128) (r0 uint128)) (set! r0 (the-as uint128 0)) @@ -287,7 +287,7 @@ ) ;; draw! (let ((a1-7 (-> obj drawable-trees))) - (draw a1-7 a1-7 disp-frame) + (draw a1-7 a1-7 arg1) ) ;; end a profile bar (if *debug-segment* diff --git a/goal_src/engine/level/level.gc b/goal_src/engine/level/level.gc index 29883b0333..60a06a3faf 100644 --- a/goal_src/engine/level/level.gc +++ b/goal_src/engine/level/level.gc @@ -1470,7 +1470,7 @@ (set! (-> *level* border?) #t) (set! (-> *setting-control* default border-mode) #t) (set! (-> *level* play?) #t) - (alloc-levels! *level* #t) + (alloc-levels! *level* #f);;#t) (set! *display-profile* #f) (set! *cheat-mode* (if *debug-segment* 'debug diff --git a/goal_src/engine/math/matrix.gc b/goal_src/engine/math/matrix.gc index d2322a19bd..0ad51da9e6 100644 --- a/goal_src/engine/math/matrix.gc +++ b/goal_src/engine/math/matrix.gc @@ -121,7 +121,100 @@ dst ) -;; definition for function matrix*! +(desfun .vf.vec (reg1 &rest regs) + "make a vector for assembly regs. + A vector is simply a list of 4 regs, the locations of each of the 4 components (x, y, z, w). + If you supply less than 4 regs, the last one will expand to the remaining components. + Examples: (.vf.vec vf1) -> (vf1 vf1 vf1 vf1); (.vf.vec vf2 vf2 vf5) -> (vf2 vf2 vf5 vf5) + TODO: make keys" + (let ( + (x reg1) + (y #f) + (z #f) + (w #f) + ) + (cond + ((= (length regs) 1) + (set! y (car regs)) + (set! z (car regs)) + (set! w (car regs)) + ) + ((= (length regs) 2) + (set! y (car regs)) + (set! z (cadr regs)) + (set! w (cadr regs)) + ) + ((>= (length regs) 3) + (set! y (car regs)) + (set! z (cadr regs)) + (set! w (caddr regs)) + ) + (#t + (set! y reg1) + (set! z reg1) + (set! w reg1) + ) + ) + (cons x (cons y (cons z (cons w '())))) + ) + ) + +(desfun .vf.x (vec) (car vec)) +(desfun .vf.y (vec) (cadr vec)) +(desfun .vf.z (vec) (caddr vec)) +(desfun .vf.w (vec) (cadddr vec)) + +(desfun .vf.vec<-arg (arg) + (if (pair? arg) + (if (= (length arg) 1) (.vf.vec (car arg)) + (if (= (length arg) 2) (.vf.vec (car arg) (cadr arg)) + (if (= (length arg) 3) (.vf.vec (car arg) (cadr arg) (caddr arg)) + (.vf.vec (car arg) (cadr arg) (caddr arg) (cadddr arg)) + ) + ) + ) + (.vf.vec arg) + ) + ) + +(defmacro .matrix*! (acc dest-mat src1-mat src2-mat) + "macro for assembly matrix multiplication. dest and src2 shall not overlap. + The mats are a list of 4 vectors." + (let ( + (dest-r1 (.vf.x (.vf.vec<-arg (car dest-mat)))) + (dest-r2 (.vf.x (.vf.vec<-arg (cadr dest-mat)))) + (dest-r3 (.vf.x (.vf.vec<-arg (caddr dest-mat)))) + (dest-r4 (.vf.x (.vf.vec<-arg (cadddr dest-mat)))) + (src1-r1 (.vf.vec<-arg (car src1-mat))) + (src1-r2 (.vf.vec<-arg (cadr src1-mat))) + (src1-r3 (.vf.vec<-arg (caddr src1-mat))) + (src1-r4 (.vf.vec<-arg (cadddr src1-mat))) + (src2-r1 (.vf.vec<-arg (car src2-mat))) + (src2-r2 (.vf.vec<-arg (cadr src2-mat))) + (src2-r3 (.vf.vec<-arg (caddr src2-mat))) + (src2-r4 (.vf.vec<-arg (cadddr src2-mat))) + ) + `(begin + (.mul.x.vf ,acc ,(.vf.x src2-r1) ,(.vf.x src1-r1)) + (.add.mul.y.vf ,acc ,(.vf.x src2-r2) ,(.vf.y src1-r1) ,acc) + (.add.mul.z.vf ,acc ,(.vf.x src2-r3) ,(.vf.z src1-r1) ,acc) + (.add.mul.w.vf ,dest-r1 ,(.vf.x src2-r4) ,(.vf.w src1-r1) ,acc) + (.mul.x.vf ,acc ,(.vf.y src2-r1) ,(.vf.x src1-r2)) + (.add.mul.y.vf ,acc ,(.vf.y src2-r2) ,(.vf.y src1-r2) ,acc) + (.add.mul.z.vf ,acc ,(.vf.y src2-r3) ,(.vf.z src1-r2) ,acc) + (.add.mul.w.vf ,dest-r2 ,(.vf.y src2-r4) ,(.vf.w src1-r2) ,acc) + (.mul.x.vf ,acc ,(.vf.z src2-r1) ,(.vf.x src1-r3)) + (.add.mul.y.vf ,acc ,(.vf.z src2-r2) ,(.vf.y src1-r3) ,acc) + (.add.mul.z.vf ,acc ,(.vf.z src2-r3) ,(.vf.z src1-r3) ,acc) + (.add.mul.w.vf ,dest-r3 ,(.vf.z src2-r4) ,(.vf.w src1-r3) ,acc) + (.mul.x.vf ,acc ,(.vf.w src2-r1) ,(.vf.x src1-r4)) + (.add.mul.y.vf ,acc ,(.vf.w src2-r2) ,(.vf.y src1-r4) ,acc) + (.add.mul.z.vf ,acc ,(.vf.w src2-r3) ,(.vf.z src1-r4) ,acc) + (.add.mul.w.vf ,dest-r4 ,(.vf.w src2-r4) ,(.vf.w src1-r4) ,acc) + ) + ) + ) + (defun matrix*! ((dst matrix) (src1 matrix) (src2 matrix)) "Set dst = src1 * src2. It is okay for any arguments to be the same data. This is a moderately efficient implementation." diff --git a/goal_src/engine/target/logic-target.gc b/goal_src/engine/target/logic-target.gc index 35b9ee2be0..c4a4869785 100644 --- a/goal_src/engine/target/logic-target.gc +++ b/goal_src/engine/target/logic-target.gc @@ -8,60 +8,33 @@ ;; DECOMP BEGINS (defbehavior build-conversions target ((arg0 vector)) - (surface-mult! - (-> self control unknown-surface01) - (-> self control unknown-surface00) - (-> self control surf) - ) - (when - (and - (and - (= (-> self fact-info-target eco-type) 3) - (>= (-> self fact-info-target eco-level) 1.0) - ) - (or - (= (-> self control unknown-surface00 name) 'run) - (= (-> self control unknown-surface00 name) 'jump) - ) + (surface-mult! (-> self control unknown-surface01) (-> self control unknown-surface00) (-> self control surf)) + (when (and + (and (= (-> self fact-info-target eco-type) 3) (>= (-> self fact-info-target eco-level) 1.0)) + (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump)) + ) + (set! (-> self control unknown-surface01 target-speed) + (+ 20480.0 (-> self control unknown-surface01 target-speed)) + ) + (set! (-> self control unknown-surface01 transv-max) + (+ 20480.0 (-> self control unknown-surface01 transv-max)) + ) ) - (set! - (-> self control unknown-surface01 target-speed) - (+ 20480.0 (-> self control unknown-surface01 target-speed)) - ) - (set! - (-> self control unknown-surface01 transv-max) - (+ 20480.0 (-> self control unknown-surface01 transv-max)) - ) - ) (let ((s5-0 (new-stack-vector0))) - (vector-z-quaternion! s5-0 (-> self control unknown-quaternion00)) - (when (logtest? (-> self control unknown-surface00 flags) 2) - (vector-flatten! s5-0 s5-0 (-> self control dynam gravity-normal)) - (vector-normalize! s5-0 1.0) + (vector-z-quaternion! s5-0 (-> self control unknown-quaternion00)) + (when (logtest? (-> self control unknown-surface00 flags) 2) + (vector-flatten! s5-0 s5-0 (-> self control dynam gravity-normal)) + (vector-normalize! s5-0 1.0) + ) + (forward-up-nopitch->inv-matrix (-> self control unknown-matrix01) s5-0 (-> self control local-normal)) ) - (forward-up-nopitch->inv-matrix - (-> self control unknown-matrix01) - s5-0 - (-> self control local-normal) - ) - ) - (matrix-transpose! - (-> self control unknown-matrix00) - (-> self control unknown-matrix01) - ) - (vector-matrix*! - (-> self control unknown-vector00) - arg0 - (-> self control unknown-matrix00) - ) - (set! - (-> self control unknown-vector51 quad) - (-> self control unknown-vector50 quad) - ) + (matrix-transpose! (-> self control unknown-matrix00) (-> self control unknown-matrix01)) + (vector-matrix*! (-> self control unknown-vector00) arg0 (-> self control unknown-matrix00)) + (set! (-> self control unknown-vector51 quad) (-> self control unknown-vector50 quad)) (let ((v0-7 (-> self control unknown-vector50))) - (set! (-> v0-7 quad) (-> self control dynam gravity-normal quad)) - v0-7 - ) + (set! (-> v0-7 quad) (-> self control dynam gravity-normal quad)) + v0-7 + ) ) (defbehavior vector-turn-to target ((arg0 vector)) @@ -70,258 +43,219 @@ (t9-0 vector-normalize!) (v1-1 (new-stack-vector0)) ) - (set! (-> v1-1 quad) (-> arg0 quad)) - (gp-0 - s5-0 - (t9-0 v1-1 1.0) - (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ)) + (set! (-> v1-1 quad) (-> arg0 quad)) + (gp-0 s5-0 (t9-0 v1-1 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ))) ) - ) (set-quaternion! (-> self control) (-> self control dir-targ)) (build-conversions (-> self control transv)) ) (defbehavior reverse-conversions target ((arg0 vector)) - (set! - (-> self control unknown-float01) - (vector-xz-length (-> self control unknown-vector00)) - ) - (vector-matrix*! - arg0 - (-> self control unknown-vector00) - (-> self control unknown-matrix01) - ) + (set! (-> self control unknown-float01) (vector-xz-length (-> self control unknown-vector00))) + (vector-matrix*! arg0 (-> self control unknown-vector00) (-> self control unknown-matrix01)) (let ((v0-2 (-> self control status))) - (set! (-> self control old-status) v0-2) - v0-2 - ) + (set! (-> self control old-status) v0-2) + v0-2 + ) ) (defun-debug draw-history ((arg0 control-info)) (when (nonzero? *display-collide-history*) - (when (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons l3)) - (set! (-> arg0 history-length) (mod (+ (-> arg0 history-length) 1) 3)) - (if (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l2)) - (set! (-> arg0 history-length) 1000) - ) - ) - (let* ((v1-15 (-> arg0 history-length)) - (s5-0 (cond - ((zero? v1-15) - 35 - ) - ((= v1-15 1) - 39 - ) - ((= v1-15 2) - 43 - ) - (else - 256 - ) - ) - ) - (v1-19 (-> arg0 history-data (-> arg0 unknown-halfword00))) - (s1-0 (-> arg0 history-data (-> arg0 unknown-halfword00))) - (s4-0 1) - (s3-0 127) + (when (cpad-pressed? 0 l3) + (set! (-> arg0 history-length) (mod (+ (-> arg0 history-length) 1) 3)) + (if (cpad-hold? 0 l2) + (set! (-> arg0 history-length) 1000) ) - (while (>= s3-0 s4-0) - (let - ((s2-0 - (-> - arg0 - history-data - (logand (+ (-> arg0 unknown-halfword00) s4-0) 127) - ) - ) - ) - (add-debug-line - (logtest? s5-0 2) - (bucket-id debug-draw1) - (-> v1-19 trans) - (-> s2-0 trans) - (the-as rgba (+ #xffff00 (shl s4-0 24))) - #f - (the-as rgba -1) - ) - (add-debug-vector - (logtest? s5-0 4) - (bucket-id debug-draw1) - (-> s2-0 trans) - (-> s2-0 transv) - (meters 0.000024414063) - (the-as rgba (+ #x408040 (shl s4-0 24))) - ) - (when (zero? (logand (-> s2-0 status) 256)) - (add-debug-line - (logtest? s5-0 1) - (bucket-id debug-draw1) - (-> s1-0 intersect) - (-> s2-0 intersect) - (the-as rgba (+ #xffffff (shl s4-0 24))) - #f - (the-as rgba -1) - ) - (let - ((s1-1 - (logand - (the-as int (-> *pat-mode-info* (-> s2-0 pat mode) hilite-color)) - (the-as uint #xffffffff00ffffff) - ) - ) - ) - (add-debug-vector - (logtest? s5-0 32) - (bucket-id debug-draw1) - (-> s2-0 intersect) - (-> s2-0 surface-normal) - (meters 1.0) - (the-as rgba (+ s1-1 (shl s4-0 24))) - ) - (add-debug-vector - (logtest? s5-0 16) - (bucket-id debug-draw1) - (-> s2-0 intersect) - (-> s2-0 local-normal) - (meters 1.0) - (the-as rgba (+ s1-1 (shl s4-0 24))) - ) - ) - (add-debug-vector - (logtest? s5-0 8) - (bucket-id debug-draw1) - (-> s2-0 trans) - (-> s2-0 transv-out) - (meters 0.000024414063) - (the-as rgba (+ #x404080 (shl s4-0 24))) - ) - (set! s1-0 s2-0) - ) - (set! v1-19 s2-0) ) - (+! s4-0 1) - ) + (let* ((v1-15 (-> arg0 history-length)) + (s5-0 (cond + ((zero? v1-15) + 35 + ) + ((= v1-15 1) + 39 + ) + ((= v1-15 2) + 43 + ) + (else + 256 + ) + ) + ) + (v1-19 (-> arg0 history-data (-> arg0 unknown-halfword00))) + (s1-0 (-> arg0 history-data (-> arg0 unknown-halfword00))) + (s4-0 1) + (s3-0 127) + ) + (while (>= s3-0 s4-0) + (let ((s2-0 (-> arg0 history-data (logand (+ (-> arg0 unknown-halfword00) s4-0) 127)))) + (add-debug-line + (logtest? s5-0 2) + (bucket-id debug-draw1) + (-> v1-19 trans) + (-> s2-0 trans) + (the-as rgba (+ #xffff00 (shl s4-0 24))) + #f + (the-as rgba -1) + ) + (add-debug-vector + (logtest? s5-0 4) + (bucket-id debug-draw1) + (-> s2-0 trans) + (-> s2-0 transv) + (meters 0.000024414063) + (the-as rgba (+ #x408040 (shl s4-0 24))) + ) + (when (zero? (logand (-> s2-0 status) 256)) + (add-debug-line + (logtest? s5-0 1) + (bucket-id debug-draw1) + (-> s1-0 intersect) + (-> s2-0 intersect) + (the-as rgba (+ #xffffff (shl s4-0 24))) + #f + (the-as rgba -1) + ) + (let ((s1-1 + (logand (the-as int (-> *pat-mode-info* (-> s2-0 pat mode) hilite-color)) (the-as uint #xffffffff00ffffff)) + ) + ) + (add-debug-vector + (logtest? s5-0 32) + (bucket-id debug-draw1) + (-> s2-0 intersect) + (-> s2-0 surface-normal) + (meters 1.0) + (the-as rgba (+ s1-1 (shl s4-0 24))) + ) + (add-debug-vector + (logtest? s5-0 16) + (bucket-id debug-draw1) + (-> s2-0 intersect) + (-> s2-0 local-normal) + (meters 1.0) + (the-as rgba (+ s1-1 (shl s4-0 24))) + ) + ) + (add-debug-vector + (logtest? s5-0 8) + (bucket-id debug-draw1) + (-> s2-0 trans) + (-> s2-0 transv-out) + (meters 0.000024414063) + (the-as rgba (+ #x404080 (shl s4-0 24))) + ) + (set! s1-0 s2-0) + ) + (set! v1-19 s2-0) + ) + (+! s4-0 1) + ) + ) + #f ) - #f - ) ) (defun-debug print-history ((arg0 control-info)) (dotimes (s5-0 128) - (let - ((s4-0 - (-> arg0 history-data (logand (+ (-> arg0 unknown-halfword00) s5-0) 127)) + (let ((s4-0 (-> arg0 history-data (logand (+ (-> arg0 unknown-halfword00) s5-0) 127)))) + (let ((s3-0 (-> s4-0 reaction-flag))) + (format + #t + "~6D ~8S #x~8X " + (-> s4-0 time) + (if (logtest? (-> s4-0 status) 256) + "air" + (-> *pat-mode-info* (-> s4-0 pat mode) name) + ) + (-> s4-0 status) + ) + (format + #t + "~C~C~C~C~C~C" + (if (zero? (logand s3-0 1)) + 103 + 87 + ) + (if (zero? (logand s3-0 2)) + 103 + 87 + ) + (cond + ((logtest? s3-0 2048) + 71 + ) + ((zero? (logand s3-0 4)) + 103 + ) + (else + 87 + ) + ) + (cond + ((logtest? s3-0 512) + 66 + ) + ((logtest? s3-0 8) + 76 + ) + (else + 99 + ) + ) + (if (zero? (logand s3-0 16)) + 110 + 66 + ) + (if (zero? (logand s3-0 32)) + 103 + 65 + ) + ) + (format + #t + "~C~C " + (if (logtest? s3-0 64) + 78 + 95 + ) + (cond + ((logtest? s3-0 1024) + 76 + ) + ((logtest? s3-0 256) + 67 + ) + ((logtest? s3-0 128) + 108 + ) + (else + 95 + ) + ) + ) + ) + (format #t "trans: ~6,,2m ~6,,2m ~6,,2m " (-> s4-0 trans x) (-> s4-0 trans y) (-> s4-0 trans z)) + (format #t "int: ~6,,2m ~6,,2m ~6,,2m " (-> s4-0 intersect x) (-> s4-0 intersect y) (-> s4-0 intersect z)) + (format #t "vel: ~6,,2m ~6,,2m ~6,,2m " (-> s4-0 transv x) (-> s4-0 transv y) (-> s4-0 transv z)) + (format + #t + "vel-out: ~6,,2m ~6,,2m ~6,,2m " + (-> s4-0 transv-out x) + (-> s4-0 transv-out y) + (-> s4-0 transv-out z) + ) + (format + #t + "normal: ~6,,2f ~6,,2f ~6,,2f " + (-> s4-0 surface-normal x) + (-> s4-0 surface-normal y) + (-> s4-0 surface-normal z) + ) ) - ) - (let ((s3-0 (-> s4-0 reaction-flag))) - (format - #t - "~6D ~8S #x~8X " - (-> s4-0 time) - (if (logtest? (-> s4-0 status) 256) - "air" - (-> *pat-mode-info* (-> s4-0 pat mode) name) - ) - (-> s4-0 status) - ) - (format #t "~C~C~C~C~C~C" (if (zero? (logand s3-0 1)) - 103 - 87 - ) - (if (zero? (logand s3-0 2)) - 103 - 87 - ) - (cond - ((logtest? s3-0 2048) - 71 - ) - ((zero? (logand s3-0 4)) - 103 - ) - (else - 87 - ) - ) - (cond - ((logtest? s3-0 512) - 66 - ) - ((logtest? s3-0 8) - 76 - ) - (else - 99 - ) - ) - (if (zero? (logand s3-0 16)) - 110 - 66 - ) - (if (zero? (logand s3-0 32)) - 103 - 65 - ) - ) - (format #t "~C~C " (if (logtest? s3-0 64) - 78 - 95 - ) - (cond - ((logtest? s3-0 1024) - 76 - ) - ((logtest? s3-0 256) - 67 - ) - ((logtest? s3-0 128) - 108 - ) - (else - 95 - ) - ) - ) - ) - (format - #t - "trans: ~6,,2m ~6,,2m ~6,,2m " - (-> s4-0 trans x) - (-> s4-0 trans y) - (-> s4-0 trans z) - ) - (format - #t - "int: ~6,,2m ~6,,2m ~6,,2m " - (-> s4-0 intersect x) - (-> s4-0 intersect y) - (-> s4-0 intersect z) - ) - (format - #t - "vel: ~6,,2m ~6,,2m ~6,,2m " - (-> s4-0 transv x) - (-> s4-0 transv y) - (-> s4-0 transv z) - ) - (format - #t - "vel-out: ~6,,2m ~6,,2m ~6,,2m " - (-> s4-0 transv-out x) - (-> s4-0 transv-out y) - (-> s4-0 transv-out z) - ) - (format - #t - "normal: ~6,,2f ~6,,2f ~6,,2f " - (-> s4-0 surface-normal x) - (-> s4-0 surface-normal y) - (-> s4-0 surface-normal z) - ) + (format #t "~%") ) - (format #t "~%") - ) 0 (none) ) @@ -332,328 +266,261 @@ ;; WARN: Stack slot load at 176 mismatch: defined as size 4, got size 16 (defun-debug target-print-stats ((arg0 target) (arg1 symbol)) (local-vars - (sv-64 string) - (sv-80 string) - (sv-96 string) - (sv-112 string) - (sv-128 string) - (sv-144 string) - (sv-160 float) - (sv-176 float) - ) + (sv-64 string) + (sv-80 string) + (sv-96 string) + (sv-112 string) + (sv-128 string) + (sv-144 string) + (sv-160 float) + (sv-176 float) + ) (when (and *display-ground-stats* arg0) - (let ((s4-0 format) - (s3-0 arg1) - (s2-0 "~0kpoly:~6X mode:~-8S material:~-10S event:~S~%") - (s1-0 (-> arg0 control poly-pat)) - (s0-0 (pat-mode->string (-> arg0 control poly-pat))) - ) - (set! sv-64 (pat-material->string (-> arg0 control poly-pat))) - (let ((t1-0 (pat-event->string (-> arg0 control poly-pat)))) - (s4-0 s3-0 s2-0 s1-0 s0-0 sv-64 t1-0) - ) - ) - (let ((s4-1 format) - (s3-1 arg1) - (s2-1 "~0kgrnd:~6X mode:~-8S material:~-10S event:~S~%") - (s1-1 (-> arg0 control ground-pat)) - (s0-1 (pat-mode->string (-> arg0 control ground-pat))) - ) - (set! sv-80 (pat-material->string (-> arg0 control ground-pat))) - (let ((t1-1 (pat-event->string (-> arg0 control ground-pat)))) - (s4-1 s3-1 s2-1 s1-1 s0-1 sv-80 t1-1) - ) - ) - (let ((s4-2 format) - (s3-2 arg1) - (s2-2 "~0kwall:~6X mode:~-8S material:~-10S event:~S~%") - (s1-2 (-> arg0 control unknown-int60)) - (s0-2 - (pat-mode->string - (the-as pat-surface (-> arg0 control unknown-int60)) - ) + (let ((s4-0 format) + (s3-0 arg1) + (s2-0 "~0kpoly:~6X mode:~-8S material:~-10S event:~S~%") + (s1-0 (-> arg0 control poly-pat)) + (s0-0 (pat-mode->string (-> arg0 control poly-pat))) ) - ) - (set! - sv-96 - (pat-material->string (the-as pat-surface (-> arg0 control unknown-int60))) - ) - (let - ((t1-2 - (pat-event->string (the-as pat-surface (-> arg0 control unknown-int60))) - ) - ) - (s4-2 s3-2 s2-2 s1-2 s0-2 sv-96 t1-2) - ) - ) - ) - (when (and *stats-target* arg0) - (format - arg1 - "~0ks: ~M ~X/~X ~A ~A ~A~%" - (-> arg0 control unknown-float01) - (-> arg0 control status) - (-> arg0 control prev-status) - (-> arg0 state name) - (-> arg0 control surf name) - (-> arg0 control unknown-surface00 name) - ) - (format - arg1 - "~0k~9S ~9S ~9S ~9S ~9S ~9S~%" - (if (logtest? (-> arg0 control status) 1) - "on-surface" - "" - ) - (if (logtest? (-> arg0 control status) 2) - "on-ground" - "" - ) - (if (logtest? (-> arg0 control status) 4) - "t-surface" - "" - ) - (if (logtest? (-> arg0 control status) 8) - "t-wall" - "" - ) - (if (logtest? (-> arg0 control status) 32) - "t-act" - "" - ) - (cond - ((logtest? (-> arg0 control status) 16) - "t-ceil" - ) - ((logtest? (-> arg0 control status) 1024) - "on-water" - ) - (else - "" - ) - ) - ) - (let ((v1-49 (handle->process (-> arg0 water volume)))) - (when v1-49 - (format - arg1 - "in water ~A at ~M ~5S ~5S ~5S ~5S " - (-> v1-49 name) - (-> arg0 water height) - (if (logtest? (-> arg0 water flags) 512) - "water" - "" - ) - (if (logtest? (-> arg0 water flags) 1024) - "wade" - "" - ) - (if (logtest? (-> arg0 water flags) 2048) - "swim" - "" - ) - (if (logtest? (-> arg0 water flags) 4096) - "under" - "" - ) - ) - (format arg1 "~2S~%" (if (logtest? (-> arg0 water flags) 16) - "sg" - "" - ) - ) - ) - ) - (format - arg1 - "~0kan:~,,3f su:~,,3f ti:~,,3f to:~,,3f pa:~,,3f~%" - (-> arg0 control surface-angle) - (-> arg0 control unknown-float61) - (-> arg0 control unknown-float62) - (-> arg0 control touch-angle) - (-> arg0 control poly-angle) - ) - (let ((v1-74 (-> arg0 control trans))) - (format - arg1 - "pos: ~6,,2m ~6,,2m ~6,,2m " - (-> v1-74 x) - (-> v1-74 y) - (-> v1-74 z) - ) - ) - (let ((s4-3 format) - (s3-3 arg1) - (s2-3 "~0kpol:~X/~S/~S/~S~%") - (s1-3 (-> arg0 control poly-pat)) - (s0-3 (pat-mode->string (-> arg0 control poly-pat))) - ) - (set! sv-112 (pat-material->string (-> arg0 control poly-pat))) - (let ((t1-7 (pat-event->string (-> arg0 control poly-pat)))) - (s4-3 s3-3 s2-3 s1-3 s0-3 sv-112 t1-7) - ) - ) - (let ((s4-4 format) - (s3-4 arg1) - (s2-4 "~0kcur:~X/~S/~S/~S ") - (s1-4 (-> arg0 control cur-pat)) - (s0-4 (pat-mode->string (-> arg0 control cur-pat))) - ) - (set! sv-128 (pat-material->string (-> arg0 control cur-pat))) - (let ((t1-8 (pat-event->string (-> arg0 control cur-pat)))) - (s4-4 s3-4 s2-4 s1-4 s0-4 sv-128 t1-8) - ) - ) - (let ((s4-5 format) - (s3-5 arg1) - (s2-5 "~0kgnd:~X/~S/~S/~S~%") - (s1-5 (-> arg0 control ground-pat)) - (s0-5 (pat-mode->string (-> arg0 control ground-pat))) - ) - (set! sv-144 (pat-material->string (-> arg0 control ground-pat))) - (let ((t1-9 (pat-event->string (-> arg0 control ground-pat)))) - (s4-5 s3-5 s2-5 s1-5 s0-5 sv-144 t1-9) - ) - ) - (let ((s4-6 format) - (s3-6 arg1) - (s2-6 "~0kvel: x:~M y:~M z:~M yv:~M xzv:~M~%") - (s1-6 (-> arg0 control transv x)) - (s0-6 (-> arg0 control transv y)) - ) - (set! sv-160 (-> arg0 control transv z)) - (set! - sv-176 - (vector-dot - (-> arg0 control dynam gravity-normal) - (-> arg0 control transv) - ) - ) - (let ((a0-36 (new-stack-vector0))) - (let - ((f0-17 - (vector-dot - (-> arg0 control dynam gravity-normal) - (-> arg0 control transv) - ) + (set! sv-64 (pat-material->string (-> arg0 control poly-pat))) + (let ((t1-0 (pat-event->string (-> arg0 control poly-pat)))) + (s4-0 s3-0 s2-0 s1-0 s0-0 sv-64 t1-0) ) - ) - 0.0 - (vector-! - a0-36 - (-> arg0 control transv) - (vector-float*! a0-36 (-> arg0 control dynam gravity-normal) f0-17) - ) ) - (let ((f0-18 (vector-length a0-36))) - f0-18 - (let ((t2-4 f0-18)) - (s4-6 s3-6 s2-6 s1-6 s0-6 sv-160 sv-176 t2-4) - ) + (let ((s4-1 format) + (s3-1 arg1) + (s2-1 "~0kgrnd:~6X mode:~-8S material:~-10S event:~S~%") + (s1-1 (-> arg0 control ground-pat)) + (s0-1 (pat-mode->string (-> arg0 control ground-pat))) + ) + (set! sv-80 (pat-material->string (-> arg0 control ground-pat))) + (let ((t1-1 (pat-event->string (-> arg0 control ground-pat)))) + (s4-1 s3-1 s2-1 s1-1 s0-1 sv-80 t1-1) + ) ) - ) - ) - (format - arg1 - "~0ky:~,,2M t:~d cy: ~,,2M my: ~,,2M impv:~,,2M " - (-> arg0 control unknown-vector52 y) - (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword11)) - (- (-> arg0 control trans y) (-> arg0 control unknown-vector52 y)) - (- - (-> arg0 control unknown-vector111 y) - (-> arg0 control unknown-vector110 y) - ) - (-> arg0 control ground-impact-vel) - ) - (format - arg1 - "~0k~Tcd: ~,,2M md:~,,2M~%" - (vector-xz-length - (vector-! - (new-stack-vector0) - (-> arg0 control trans) - (-> arg0 control unknown-vector52) + (let ((s4-2 format) + (s3-2 arg1) + (s2-2 "~0kwall:~6X mode:~-8S material:~-10S event:~S~%") + (s1-2 (-> arg0 control unknown-int60)) + (s0-2 (pat-mode->string (the-as pat-surface (-> arg0 control unknown-int60)))) + ) + (set! sv-96 (pat-material->string (the-as pat-surface (-> arg0 control unknown-int60)))) + (let ((t1-2 (pat-event->string (the-as pat-surface (-> arg0 control unknown-int60))))) + (s4-2 s3-2 s2-2 s1-2 s0-2 sv-96 t1-2) + ) ) - ) - (vector-xz-length - (vector-! - (new-stack-vector0) - (-> arg0 control unknown-vector111) - (-> arg0 control unknown-vector110) + ) + (when (and *stats-target* arg0) + (format + arg1 + "~0ks: ~M ~X/~X ~A ~A ~A~%" + (-> arg0 control unknown-float01) + (-> arg0 control status) + (-> arg0 control prev-status) + (-> arg0 state name) + (-> arg0 control surf name) + (-> arg0 control unknown-surface00 name) ) - ) + (format + arg1 + "~0k~9S ~9S ~9S ~9S ~9S ~9S~%" + (if (logtest? (-> arg0 control status) 1) + "on-surface" + "" + ) + (if (logtest? (-> arg0 control status) 2) + "on-ground" + "" + ) + (if (logtest? (-> arg0 control status) 4) + "t-surface" + "" + ) + (if (logtest? (-> arg0 control status) 8) + "t-wall" + "" + ) + (if (logtest? (-> arg0 control status) 32) + "t-act" + "" + ) + (cond + ((logtest? (-> arg0 control status) 16) + "t-ceil" + ) + ((logtest? (-> arg0 control status) 1024) + "on-water" + ) + (else + "" + ) + ) + ) + (let ((v1-49 (handle->process (-> arg0 water volume)))) + (when v1-49 + (format + arg1 + "in water ~A at ~M ~5S ~5S ~5S ~5S " + (-> v1-49 name) + (-> arg0 water height) + (if (logtest? (-> arg0 water flags) 512) + "water" + "" + ) + (if (logtest? (-> arg0 water flags) 1024) + "wade" + "" + ) + (if (logtest? (-> arg0 water flags) 2048) + "swim" + "" + ) + (if (logtest? (-> arg0 water flags) 4096) + "under" + "" + ) + ) + (format arg1 "~2S~%" (if (logtest? (-> arg0 water flags) 16) + "sg" + "" + ) + ) + ) + ) + (format + arg1 + "~0kan:~,,3f su:~,,3f ti:~,,3f to:~,,3f pa:~,,3f~%" + (-> arg0 control surface-angle) + (-> arg0 control unknown-float61) + (-> arg0 control unknown-float62) + (-> arg0 control touch-angle) + (-> arg0 control poly-angle) + ) + (let ((v1-74 (-> arg0 control trans))) + (format arg1 "pos: ~6,,2m ~6,,2m ~6,,2m " (-> v1-74 x) (-> v1-74 y) (-> v1-74 z)) + ) + (let ((s4-3 format) + (s3-3 arg1) + (s2-3 "~0kpol:~X/~S/~S/~S~%") + (s1-3 (-> arg0 control poly-pat)) + (s0-3 (pat-mode->string (-> arg0 control poly-pat))) + ) + (set! sv-112 (pat-material->string (-> arg0 control poly-pat))) + (let ((t1-7 (pat-event->string (-> arg0 control poly-pat)))) + (s4-3 s3-3 s2-3 s1-3 s0-3 sv-112 t1-7) + ) + ) + (let ((s4-4 format) + (s3-4 arg1) + (s2-4 "~0kcur:~X/~S/~S/~S ") + (s1-4 (-> arg0 control cur-pat)) + (s0-4 (pat-mode->string (-> arg0 control cur-pat))) + ) + (set! sv-128 (pat-material->string (-> arg0 control cur-pat))) + (let ((t1-8 (pat-event->string (-> arg0 control cur-pat)))) + (s4-4 s3-4 s2-4 s1-4 s0-4 sv-128 t1-8) + ) + ) + (let ((s4-5 format) + (s3-5 arg1) + (s2-5 "~0kgnd:~X/~S/~S/~S~%") + (s1-5 (-> arg0 control ground-pat)) + (s0-5 (pat-mode->string (-> arg0 control ground-pat))) + ) + (set! sv-144 (pat-material->string (-> arg0 control ground-pat))) + (let ((t1-9 (pat-event->string (-> arg0 control ground-pat)))) + (s4-5 s3-5 s2-5 s1-5 s0-5 sv-144 t1-9) + ) + ) + (let ((s4-6 format) + (s3-6 arg1) + (s2-6 "~0kvel: x:~M y:~M z:~M yv:~M xzv:~M~%") + (s1-6 (-> arg0 control transv x)) + (s0-6 (-> arg0 control transv y)) + ) + (set! sv-160 (-> arg0 control transv z)) + (set! sv-176 (vector-dot (-> arg0 control dynam gravity-normal) (-> arg0 control transv))) + (let ((a0-36 (new-stack-vector0))) + (let ((f0-17 (vector-dot (-> arg0 control dynam gravity-normal) (-> arg0 control transv)))) + 0.0 + (vector-! a0-36 (-> arg0 control transv) (vector-float*! a0-36 (-> arg0 control dynam gravity-normal) f0-17)) + ) + (let ((f0-18 (vector-length a0-36))) + f0-18 + (let ((t2-4 f0-18)) + (s4-6 s3-6 s2-6 s1-6 s0-6 sv-160 sv-176 t2-4) + ) + ) + ) + ) + (format + arg1 + "~0ky:~,,2M t:~d cy: ~,,2M my: ~,,2M impv:~,,2M " + (-> arg0 control unknown-vector52 y) + (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword11)) + (- (-> arg0 control trans y) (-> arg0 control unknown-vector52 y)) + (- (-> arg0 control unknown-vector111 y) (-> arg0 control unknown-vector110 y)) + (-> arg0 control ground-impact-vel) + ) + (format + arg1 + "~0k~Tcd: ~,,2M md:~,,2M~%" + (vector-xz-length (vector-! (new-stack-vector0) (-> arg0 control trans) (-> arg0 control unknown-vector52))) + (vector-xz-length + (vector-! (new-stack-vector0) (-> arg0 control unknown-vector111) (-> arg0 control unknown-vector110)) + ) + ) + (format + arg1 + "~0kbend b:~F t:~F s:~F~%" + (-> arg0 control unknown-float80) + (-> arg0 control unknown-float81) + (-> arg0 control unknown-float82) + ) + (dummy-10 (-> arg0 skel) arg1) ) - (format - arg1 - "~0kbend b:~F t:~F s:~F~%" - (-> arg0 control unknown-float80) - (-> arg0 control unknown-float81) - (-> arg0 control unknown-float82) - ) - (dummy-10 (-> arg0 skel) arg1) - ) (draw-history (-> arg0 control)) #f ) (defbehavior read-pad target ((arg0 vector)) (when (!= (-> self control unknown-dword00) (-> *display* real-frame-counter)) - (set! - (-> self control unknown-vector31 quad) - (-> self control unknown-vector30 quad) + (set! (-> self control unknown-vector31 quad) (-> self control unknown-vector30 quad)) + (set! (-> self control unknown-float21) (-> self control unknown-float20)) + (set! (-> self control unknown-dword00) (the-as uint (-> *display* real-frame-counter))) ) - (set! (-> self control unknown-float21) (-> self control unknown-float20)) - (set! - (-> self control unknown-dword00) - (the-as uint (-> *display* real-frame-counter)) - ) - ) (set! (-> arg0 x) (sin (-> self control unknown-cpad-info00 stick0-dir))) (set! (-> arg0 y) 0.0) (set! (-> arg0 z) (cos (-> self control unknown-cpad-info00 stick0-dir))) (set! (-> arg0 w) 0.0) (set! (-> self control unknown-vector30 quad) (-> arg0 quad)) - (set! - (-> self control unknown-float20) - (-> self control unknown-cpad-info00 stick0-speed) - ) + (set! (-> self control unknown-float20) (-> self control unknown-cpad-info00 stick0-speed)) (vector-matrix*! arg0 arg0 (matrix-local->world #t #f)) ) (defun warp-vector-into-surface! ((arg0 vector) (arg1 vector) (arg2 vector)) - (let - ((a2-2 - (matrix-from-two-vectors! - (new-stack-matrix0) - (-> (matrix-local->world #t #f) vector 1) - arg2 - ) - ) + (let ((a2-2 (matrix-from-two-vectors! (new-stack-matrix0) (-> (matrix-local->world #t #f) vector 1) arg2))) + (vector-matrix*! arg0 arg1 a2-2) ) - (vector-matrix*! arg0 arg1 a2-2) - ) ) (defbehavior vector<-pad-in-surface! target ((arg0 vector) (arg1 symbol)) (let ((a1-1 (read-pad (new-stack-vector0)))) - (warp-vector-into-surface! arg0 a1-1 (-> self control local-normal)) - ) + (warp-vector-into-surface! arg0 a1-1 (-> self control local-normal)) + ) (if arg1 - (vector-float*! arg0 arg0 (-> self control unknown-float20)) - ) + (vector-float*! arg0 arg0 (-> self control unknown-float20)) + ) arg0 ) (defbehavior local-pad-angle target () (let ((a0-1 (vector<-pad-in-surface! (new-stack-vector0) #f))) - (vector-dot - (vector-normalize! a0-1 1.0) - (vector-z-quaternion! - (new-stack-vector0) - (-> self control unknown-quaternion00) - ) + (vector-dot + (vector-normalize! a0-1 1.0) + (vector-z-quaternion! (new-stack-vector0) (-> self control unknown-quaternion00)) + ) ) - ) ) (defbehavior turn-around? target () @@ -662,59 +529,47 @@ (t9-2 vector-normalize!) (a0-2 (new-stack-vector0)) ) - (set! (-> a0-2 quad) (-> self control transv quad)) - (let ((f0-1 (vector-dot gp-0 (t9-2 a0-2 1.0))) - (a1-3 (-> self control unknown-vector-array10)) - (f2-0 -1000.0) - (f1-0 0.0) - (a0-3 -1) - (v1-6 (new 'static 'array uint64 1 #x0)) - ) - (countdown (a2-0 15) - (let ((a3-2 (-> a1-3 a2-0 quad))) - (set! (-> a1-3 (+ a2-0 1) quad) a3-2) - ) - ) - (set! (-> a1-3 0 quad) (-> self control transv quad)) - (set! (-> a1-3 0 w) (-> self control unknown-float01)) - (dotimes (a2-6 16) - (+! f1-0 (-> a1-3 a2-6 w)) - (when (< f2-0 (-> a1-3 a2-6 w)) - (set! a0-3 a2-6) - (set! f2-0 (-> a1-3 a2-6 w)) - ) - ) - (let ((f1-1 (* 0.0625 f1-0))) - (set! (-> self control unknown-int10) a0-3) - (set! (-> self control unknown-float100) f1-1) - (if (logtest? (-> self control unknown-surface01 flags) 8) - (set! (-> v1-6 0) (the-as uint (-> *display* base-frame-counter))) - ) - (and - (>= - (the-as - uint - (- (-> *display* base-frame-counter) (the-as int (-> v1-6 0))) + (set! (-> a0-2 quad) (-> self control transv quad)) + (let ((f0-1 (vector-dot gp-0 (t9-2 a0-2 1.0))) + (a1-3 (-> self control unknown-vector-array10)) + (f2-0 -1000.0) + (f1-0 0.0) + (a0-3 -1) + (v1-6 (new 'static 'array uint64 1 #x0)) + ) + (countdown (a2-0 15) + (let ((a3-2 (-> a1-3 a2-0 quad))) + (set! (-> a1-3 (+ a2-0 1) quad) a3-2) + ) + ) + (set! (-> a1-3 0 quad) (-> self control transv quad)) + (set! (-> a1-3 0 w) (-> self control unknown-float01)) + (dotimes (a2-6 16) + (+! f1-0 (-> a1-3 a2-6 w)) + (when (< f2-0 (-> a1-3 a2-6 w)) + (set! a0-3 a2-6) + (set! f2-0 (-> a1-3 a2-6 w)) + ) + ) + (let ((f1-1 (* 0.0625 f1-0))) + (set! (-> self control unknown-int10) a0-3) + (set! (-> self control unknown-float100) f1-1) + (if (logtest? (-> self control unknown-surface01 flags) 8) + (set! (-> v1-6 0) (the-as uint (-> *display* base-frame-counter))) + ) + (and + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> v1-6 0)))) (the-as uint 300)) + (< f0-1 0.0) + (< 32768.0 f1-1) + (< 0.7 (-> self control unknown-float20)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 90) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 90) + (logtest? (-> self control status) 1) + (and (< 0.7 (-> self control surface-angle)) #t) + ) ) - (the-as uint 300) - ) - (< f0-1 0.0) - (< 32768.0 f1-1) - (< 0.7 (-> self control unknown-float20)) - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) - 90 - ) - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) - 90 - ) - (logtest? (-> self control status) 1) - (and (< 0.7 (-> self control surface-angle)) #t) ) - ) ) - ) ) (defbehavior target-move-dist target ((arg0 int)) @@ -722,624 +577,417 @@ (f30-0 0.0) (gp-0 0) ) - (let* ((v1-0 127) - (a1-6 - (-> - self - control - history-data - (logand (+ (-> self control unknown-halfword00) v1-0) 127) - ) + (let* ((v1-0 127) + (a1-6 (-> self control history-data (logand (+ (-> self control unknown-halfword00) v1-0) 127))) ) - ) - (while - (and - (< (- (-> *display* base-frame-counter) (-> a1-6 time)) arg0) - (> v1-0 0) - ) - (vector+! s5-0 s5-0 (-> a1-6 trans)) - (+! gp-0 1) - (+! v1-0 -1) - (set! - a1-6 - (-> - self - control - history-data - (logand (+ (-> self control unknown-halfword00) v1-0) 127) - ) - ) - ) - ) - (vector-float/! s5-0 s5-0 (the float gp-0)) - (let ((s4-0 (- 128 gp-0))) - (while (< s4-0 128) - (let - ((v1-9 - (-> - self - control - history-data - (logand (+ (-> self control unknown-halfword00) s4-0) 127) - ) + (while (and (< (- (-> *display* base-frame-counter) (-> a1-6 time)) arg0) (> v1-0 0)) + (vector+! s5-0 s5-0 (-> a1-6 trans)) + (+! gp-0 1) + (+! v1-0 -1) + (set! a1-6 (-> self control history-data (logand (+ (-> self control unknown-halfword00) v1-0) 127))) ) - ) - (+! f30-0 (vector-vector-distance s5-0 (-> v1-9 trans))) ) - (+! s4-0 1) - ) + (vector-float/! s5-0 s5-0 (the float gp-0)) + (let ((s4-0 (- 128 gp-0))) + (while (< s4-0 128) + (let ((v1-9 (-> self control history-data (logand (+ (-> self control unknown-halfword00) s4-0) 127)))) + (+! f30-0 (vector-vector-distance s5-0 (-> v1-9 trans))) + ) + (+! s4-0 1) + ) + ) + (/ f30-0 (the float gp-0)) ) - (/ f30-0 (the float gp-0)) - ) ) (defbehavior turn-to-vector target ((arg0 vector) (arg1 float)) (let ((gp-0 (new-stack-vector0))) - (warp-vector-into-surface! gp-0 arg0 (-> self control local-normal)) - (set! (-> self control unknown-float13) (-> self control unknown-float12)) - (set! (-> self control unknown-float11) (-> self control unknown-float10)) - (set! - (-> self control unknown-vector21 quad) - (-> self control unknown-vector20 quad) + (warp-vector-into-surface! gp-0 arg0 (-> self control local-normal)) + (set! (-> self control unknown-float13) (-> self control unknown-float12)) + (set! (-> self control unknown-float11) (-> self control unknown-float10)) + (set! (-> self control unknown-vector21 quad) (-> self control unknown-vector20 quad)) + (set! (-> self control unknown-vector23 quad) (-> self control unknown-vector22 quad)) + (vector-float*! (-> self control unknown-vector22) gp-0 arg1) + (if (< 0.0 arg1) + (warp-vector-into-surface! (-> self control unknown-vector20) arg0 *up-vector*) + ) + (dotimes (v1-15 7) + (set! (-> self control unknown-vector-array00 (+ v1-15 1) quad) + (-> self control unknown-vector-array00 v1-15 quad) + ) + ) + (set! (-> self control unknown-vector-array00 0 quad) + (-> (vector-matrix*! gp-0 gp-0 (-> self control unknown-matrix00)) quad) + ) + (let ((f0-6 (atan (-> gp-0 x) (-> gp-0 z)))) + (set! (-> self control unknown-float12) arg1) + (set! (-> self control unknown-float10) f0-6) + ) + (let ((f0-8 (* arg1 (-> self control unknown-surface01 target-speed)))) + (set! (-> self control unknown-vector01 quad) (-> (vector-normalize! gp-0 f0-8) quad)) + ) ) - (set! - (-> self control unknown-vector23 quad) - (-> self control unknown-vector22 quad) - ) - (vector-float*! (-> self control unknown-vector22) gp-0 arg1) - (if (< 0.0 arg1) - (warp-vector-into-surface! - (-> self control unknown-vector20) - arg0 - *up-vector* - ) - ) - (dotimes (v1-15 7) - (set! - (-> self control unknown-vector-array00 (+ v1-15 1) quad) - (-> self control unknown-vector-array00 v1-15 quad) - ) - ) - (set! - (-> self control unknown-vector-array00 0 quad) - (-> (vector-matrix*! gp-0 gp-0 (-> self control unknown-matrix00)) quad) - ) - (let ((f0-6 (atan (-> gp-0 x) (-> gp-0 z)))) - (set! (-> self control unknown-float12) arg1) - (set! (-> self control unknown-float10) f0-6) - ) - (let ((f0-8 (* arg1 (-> self control unknown-surface01 target-speed)))) - (set! - (-> self control unknown-vector01 quad) - (-> (vector-normalize! gp-0 f0-8) quad) - ) - ) - ) (let ((gp-1 (new-stack-vector0))) - (vector-matrix*! - gp-1 - (-> self control unknown-vector01) - (-> self control unknown-matrix01) + (vector-matrix*! gp-1 (-> self control unknown-vector01) (-> self control unknown-matrix01)) + (vector-float*! gp-1 gp-1 0.5) + (vector+! gp-1 gp-1 (-> self control trans)) + (add-debug-text-sphere + *display-target-marks* + (bucket-id debug-draw1) + gp-1 + 819.2 + "target" + (new 'static 'rgba :r #xff :g #xff :a #x80) + ) ) - (vector-float*! gp-1 gp-1 0.5) - (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-draw1) - gp-1 - 819.2 - "target" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) ) (defbehavior add-thrust target () (let ((s5-0 (-> self control unknown-vector01)) (gp-0 (-> self control unknown-vector00)) ) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> self control unknown-vector01 quad)) - (let* - ((a1-2 - (vector-flatten! - (new 'stack-no-clear 'vector) - (vector-negate! - (new-stack-vector0) - (-> self control dynam gravity-normal) - ) - (-> self control local-normal) - ) - ) - (s1-0 - (vector-matrix*! - (new 'stack-no-clear 'vector) - a1-2 - (-> self control unknown-matrix00) - ) - ) - (s3-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s1-0 1.0)) - ) - (vector+float*! - s5-0 - s5-0 - s1-0 - (-> self control unknown-surface01 slide-factor) - ) - (let ((s2-1 (-> self control unknown-vector60))) - (when - (not - (or - (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) - (< (vector-length s1-0) 0.1) - ) - ) - (let* - ((s1-1 - (vector-matrix*! - (new 'stack-no-clear 'vector) - s2-1 - (-> self control unknown-matrix00) - ) - ) - (s2-2 (new-stack-vector0)) - (f30-0 (vector-dot s1-1 s5-0)) - ) - 0.0 - (vector-! s2-2 s5-0 (vector-float*! s2-2 s1-1 f30-0)) - (let* ((f0-7 (vector-length s2-2)) - (f1-3 f0-7) - ) - (if (< f30-0 0.0) - (set! - f30-0 - (* f30-0 (-> self control unknown-surface01 slope-up-traction)) - ) - ) - (let - ((f2-3 - (+ f30-0 (-> self control unknown-surface01 slope-down-factor)) - ) - ) - (vector+! - s5-0 - (vector-float*! s5-0 s1-1 f2-3) - (vector-float*! s2-2 s2-2 (/ f0-7 f1-3)) - ) - ) - ) - ) - ) - ) - (let ((t9-8 vector-xz-normalize!) - (a0-13 (new-stack-vector0)) - ) - (set! (-> a0-13 quad) (-> s5-0 quad)) - (let ((v1-31 (t9-8 a0-13 1.0))) - (set! (-> v1-31 y) 0.0) - (let ((f30-1 (vector-dot s3-1 v1-31)) - (f0-11 (vector-xz-length s5-0)) - ) - (if (< 0.0 f30-1) - (vector-xz-normalize! - s5-0 - (+ - f0-11 - (* f30-1 (-> self control unknown-surface01 slope-down-factor)) - ) - ) - (vector-xz-normalize! - s5-0 - (- - f0-11 - (* f30-1 f30-1 (-> self control unknown-surface01 slope-up-factor)) - ) - ) - ) - ) - ) - ) - ) - (let ((t9-12 vector-xz-normalize!) - (a0-17 (new-stack-vector0)) - ) - (set! (-> a0-17 quad) (-> s5-0 quad)) - (let ((s3-2 (t9-12 a0-17 1.0))) - (let ((t9-13 vector-xz-normalize!) - (a0-18 (new-stack-vector0)) - ) - (set! (-> a0-18 quad) (-> gp-0 quad)) - (let ((v1-43 (t9-13 a0-18 1.0))) - (set! (-> s3-2 y) 0.0) - (set! (-> v1-43 y) 0.0) - ) - ) - (let* ((f30-2 (-> s3-2 z)) - (f30-4 (cond - ((>= (vector-xz-length gp-0) (vector-xz-length s5-0)) - (* - (-> self control unknown-surface01 fric) - (fmax - 1.0 - (/ - (vector-xz-length gp-0) - (-> self control unknown-surface01 nonlin-fric-dist) - ) - ) - ) - ) - ((>= f30-2 0.0) - (+ - (* f30-2 (-> self control unknown-surface01 seek0)) - (* - (- 1.0 f30-2) - (-> self control unknown-surface01 seek90) - ) - ) - ) - (else - (+ - (* - (fabs f30-2) - (-> self control unknown-surface01 seek180) - ) - (* - (+ 1.0 f30-2) - (-> self control unknown-surface01 seek90) - ) - ) - ) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> self control unknown-vector01 quad)) + (let* ((a1-2 (vector-flatten! + (new 'stack-no-clear 'vector) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal) ) - ) + ) + (s1-0 (vector-matrix*! (new 'stack-no-clear 'vector) a1-2 (-> self control unknown-matrix00))) + (s3-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s1-0 1.0)) ) - (let* ((s2-3 (-> self control unknown-vector61)) - (s3-3 - (vector-matrix*! - (new 'stack-no-clear 'vector) - s2-3 - (-> self control unknown-matrix00) + (vector+float*! s5-0 s5-0 s1-0 (-> self control unknown-surface01 slide-factor)) + (let ((s2-1 (-> self control unknown-vector60))) + (when (not (or (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) (< (vector-length s1-0) 0.1))) + (let* ((s1-1 (vector-matrix*! (new 'stack-no-clear 'vector) s2-1 (-> self control unknown-matrix00))) + (s2-2 (new-stack-vector0)) + (f30-0 (vector-dot s1-1 s5-0)) + ) + 0.0 + (vector-! s2-2 s5-0 (vector-float*! s2-2 s1-1 f30-0)) + (let* ((f0-7 (vector-length s2-2)) + (f1-3 f0-7) + ) + (if (< f30-0 0.0) + (set! f30-0 (* f30-0 (-> self control unknown-surface01 slope-up-traction))) + ) + (let ((f2-3 (+ f30-0 (-> self control unknown-surface01 slope-down-factor)))) + (vector+! s5-0 (vector-float*! s5-0 s1-1 f2-3) (vector-float*! s2-2 s2-2 (/ f0-7 f1-3))) + ) ) - ) ) - (if (< (-> s4-0 x) 0.0) - (set! (-> s3-3 x) (fmax (fmin 0.0 (-> s3-3 x)) (-> s4-0 x))) - (set! (-> s3-3 x) (fmax 0.0 (fmin (-> s3-3 x) (-> s4-0 x)))) - ) - (if (< (-> s4-0 y) 0.0) - (set! (-> s3-3 y) (fmax (fmin 0.0 (-> s3-3 y)) (-> s4-0 y))) - (set! (-> s3-3 y) (fmax 0.0 (fmin (-> s3-3 y) (-> s4-0 y)))) - ) - (if (< (-> s4-0 z) 0.0) - (set! (-> s3-3 z) (fmax (fmin 0.0 (-> s3-3 z)) (-> s4-0 z))) - (set! (-> s3-3 z) (fmax 0.0 (fmin (-> s3-3 z) (-> s4-0 z)))) - ) - (if (< 0.2 (-> self control unknown-float70)) - (vector-seek! s3-3 s4-0 (* 122880.0 (-> *display* seconds-per-frame))) - ) - (vector-matrix*! s2-3 s3-3 (-> self control unknown-matrix01)) - (let ((f28-2 (vector-vector-xz-distance s3-3 s4-0))) - (when - (and - (zero? (logand (-> self control status) 4)) - (< (vector-xz-length gp-0) (vector-xz-length s3-3)) - ) - (let ((f0-50 (lerp-scale 163840.0 0.0 f28-2 0.0 20480.0))) - (if (and (< f28-2 20480.0) (< (-> s4-0 z) 0.0)) - (set! f0-50 (* 2.0 f0-50)) ) - (+! f30-4 f0-50) - ) ) - ) - ) - (if - (and - (zero? (logand (-> self control status) 8)) - (logtest? (-> self control old-status) 8) - (logtest? (-> self control unknown-surface00 flags) 2048) - (< 0.0 (-> gp-0 y)) - (< - 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (the-as vector (-> self control unknown-sphere-array00 1 prim-core)) - (-> self control unknown-vector70) + (let ((t9-8 vector-xz-normalize!) + (a0-13 (new-stack-vector0)) + ) + (set! (-> a0-13 quad) (-> s5-0 quad)) + (let ((v1-31 (t9-8 a0-13 1.0))) + (set! (-> v1-31 y) 0.0) + (let ((f30-1 (vector-dot s3-1 v1-31)) + (f0-11 (vector-xz-length s5-0)) + ) + (if (< 0.0 f30-1) + (vector-xz-normalize! s5-0 (+ f0-11 (* f30-1 (-> self control unknown-surface01 slope-down-factor)))) + (vector-xz-normalize! s5-0 (- f0-11 (* f30-1 f30-1 (-> self control unknown-surface01 slope-up-factor)))) + ) + ) ) - ) ) - ) - (set! - (-> self control unknown-dword70) - (-> *display* base-frame-counter) - ) ) - (if - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword70)) - 60 - ) - (set! f30-4 (+ 204800.0 f30-4)) - ) - (if - (and - (zero? (logand (-> self control status) 8)) - (and - (logtest? (-> self control old-status) 8) - (logtest? (-> self control unknown-surface00 flags) 2048) - (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) + (let ((t9-12 vector-xz-normalize!) + (a0-17 (new-stack-vector0)) + ) + (set! (-> a0-17 quad) (-> s5-0 quad)) + (let ((s3-2 (t9-12 a0-17 1.0))) + (let ((t9-13 vector-xz-normalize!) + (a0-18 (new-stack-vector0)) + ) + (set! (-> a0-18 quad) (-> gp-0 quad)) + (let ((v1-43 (t9-13 a0-18 1.0))) + (set! (-> s3-2 y) 0.0) + (set! (-> v1-43 y) 0.0) + ) + ) + (let* ((f30-2 (-> s3-2 z)) + (f30-4 (cond + ((>= (vector-xz-length gp-0) (vector-xz-length s5-0)) + (* (-> self control unknown-surface01 fric) + (fmax 1.0 (/ (vector-xz-length gp-0) (-> self control unknown-surface01 nonlin-fric-dist))) + ) + ) + ((>= f30-2 0.0) + (+ (* f30-2 (-> self control unknown-surface01 seek0)) + (* (- 1.0 f30-2) (-> self control unknown-surface01 seek90)) + ) + ) + (else + (+ (* (fabs f30-2) (-> self control unknown-surface01 seek180)) + (* (+ 1.0 f30-2) (-> self control unknown-surface01 seek90)) + ) + ) + ) + ) + ) + (let* ((s2-3 (-> self control unknown-vector61)) + (s3-3 (vector-matrix*! (new 'stack-no-clear 'vector) s2-3 (-> self control unknown-matrix00))) + ) + (if (< (-> s4-0 x) 0.0) + (set! (-> s3-3 x) (fmax (fmin 0.0 (-> s3-3 x)) (-> s4-0 x))) + (set! (-> s3-3 x) (fmax 0.0 (fmin (-> s3-3 x) (-> s4-0 x)))) + ) + (if (< (-> s4-0 y) 0.0) + (set! (-> s3-3 y) (fmax (fmin 0.0 (-> s3-3 y)) (-> s4-0 y))) + (set! (-> s3-3 y) (fmax 0.0 (fmin (-> s3-3 y) (-> s4-0 y)))) + ) + (if (< (-> s4-0 z) 0.0) + (set! (-> s3-3 z) (fmax (fmin 0.0 (-> s3-3 z)) (-> s4-0 z))) + (set! (-> s3-3 z) (fmax 0.0 (fmin (-> s3-3 z) (-> s4-0 z)))) + ) + (if (< 0.2 (-> self control unknown-float70)) + (vector-seek! s3-3 s4-0 (* 122880.0 (-> *display* seconds-per-frame))) + ) + (vector-matrix*! s2-3 s3-3 (-> self control unknown-matrix01)) + (let ((f28-2 (vector-vector-xz-distance s3-3 s4-0))) + (when (and (zero? (logand (-> self control status) 4)) (< (vector-xz-length gp-0) (vector-xz-length s3-3))) + (let ((f0-50 (lerp-scale 163840.0 0.0 f28-2 0.0 20480.0))) + (if (and (< f28-2 20480.0) (< (-> s4-0 z) 0.0)) + (set! f0-50 (* 2.0 f0-50)) + ) + (+! f30-4 f0-50) + ) + ) + ) + ) + (if (and + (zero? (logand (-> self control status) 8)) + (logtest? (-> self control old-status) 8) + (logtest? (-> self control unknown-surface00 flags) 2048) + (< 0.0 (-> gp-0 y)) + (< 0.0 (vector-dot + (-> self control dynam gravity-normal) + (vector-! + (new 'stack-no-clear 'vector) + (the-as vector (-> self control unknown-sphere-array00 1 prim-core)) + (-> self control unknown-vector70) + ) + ) + ) + ) + (set! (-> self control unknown-dword70) (-> *display* base-frame-counter)) + ) + (if (< (- (-> *display* base-frame-counter) (-> self control unknown-dword70)) 60) + (set! f30-4 (+ 204800.0 f30-4)) + ) + (if (and (zero? (logand (-> self control status) 8)) (and + (logtest? (-> self control old-status) 8) + (logtest? (-> self control unknown-surface00 flags) 2048) + (< 0.0 (-> gp-0 y)) + (< (-> gp-0 z) 0.0) + ) + ) + (set! (-> gp-0 z) 0.0) + ) + (let ((s4-2 (vector-! (new-stack-vector0) s5-0 gp-0))) + (let ((f30-5 (* f30-4 (-> *display* seconds-per-frame)))) + (set! (-> s4-2 y) 0.0) + (if (< f30-5 (vector-xz-length s4-2)) + (vector-xz-normalize! s4-2 f30-5) + ) + ) + (vector+! gp-0 gp-0 s4-2) + ) + ) ) - ) - (set! (-> gp-0 z) 0.0) ) - (let ((s4-2 (vector-! (new-stack-vector0) s5-0 gp-0))) - (let ((f30-5 (* f30-4 (-> *display* seconds-per-frame)))) - (set! (-> s4-2 y) 0.0) - (if (< f30-5 (vector-xz-length s4-2)) - (vector-xz-normalize! s4-2 f30-5) - ) - ) - (vector+! gp-0 gp-0 s4-2) - ) - ) ) - ) + (set! (-> self control unknown-float02) (vector-length gp-0)) ) - (set! (-> self control unknown-float02) (vector-length gp-0)) - ) (let ((gp-1 (new-stack-vector0))) - (vector-matrix*! - gp-1 - (-> self control unknown-vector00) - (-> self control unknown-matrix01) + (vector-matrix*! gp-1 (-> self control unknown-vector00) (-> self control unknown-matrix01)) + (vector-float*! gp-1 gp-1 0.5) + (vector+! gp-1 gp-1 (-> self control trans)) + (add-debug-text-sphere + *display-target-marks* + (bucket-id debug-draw1) + gp-1 + 819.2 + "ltransv" + (new 'static 'rgba :g #xff :a #x80) + ) + (set! (-> gp-1 quad) (-> self control unknown-vector61 quad)) + (vector-float*! gp-1 gp-1 0.5) + (vector+! gp-1 gp-1 (-> self control trans)) + (add-debug-text-sphere + *display-target-marks* + (bucket-id debug-draw1) + gp-1 + 819.2 + "btransv" + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + ) ) - (vector-float*! gp-1 gp-1 0.5) - (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-draw1) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :a #x80) - ) - (set! (-> gp-1 quad) (-> self control unknown-vector61 quad)) - (vector-float*! gp-1 gp-1 0.5) - (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-draw1) - gp-1 - 819.2 - "btransv" - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) ) (defbehavior add-gravity target () (let ((s5-0 (new-stack-vector0)) (gp-0 (new-stack-vector0)) ) - (dummy-62 - (-> self control) - s5-0 - (-> self control unknown-surface01 slip-factor) + (dummy-62 (-> self control) s5-0 (-> self control unknown-surface01 slip-factor)) + (vector-matrix*! gp-0 s5-0 (-> self control unknown-matrix00)) + (vector-v++! (-> self control unknown-vector00) gp-0) ) - (vector-matrix*! gp-0 s5-0 (-> self control unknown-matrix00)) - (vector-v++! (-> self control unknown-vector00) gp-0) - ) - (let* - ((s5-1 - (vector-matrix*! - (new-stack-vector0) - (-> self control dynam gravity-normal) - (-> self control unknown-matrix00) - ) - ) - (gp-1 (new-stack-vector0)) - (f30-0 (vector-dot s5-1 (-> self control unknown-vector00))) - ) - 0.0 - (vector-! - gp-1 - (-> self control unknown-vector00) - (vector-float*! gp-1 s5-1 f30-0) - ) - (let* ((f0-4 (vector-length gp-1)) - (f1-0 f0-4) + (let* ((s5-1 (vector-matrix*! + (new-stack-vector0) + (-> self control dynam gravity-normal) + (-> self control unknown-matrix00) + ) + ) + (gp-1 (new-stack-vector0)) + (f30-0 (vector-dot s5-1 (-> self control unknown-vector00))) + ) + 0.0 + (vector-! gp-1 (-> self control unknown-vector00) (vector-float*! gp-1 s5-1 f30-0)) + (let* ((f0-4 (vector-length gp-1)) + (f1-0 f0-4) + ) + (if (< f0-4 0.00004096) + (set! f0-4 0.0) ) - (if (< f0-4 0.00004096) - (set! f0-4 0.0) - ) - (if (< f30-0 (- (-> self control dynam gravity-max))) - (set! f30-0 (- (-> self control dynam gravity-max))) - ) - (vector+! - (-> self control unknown-vector00) - (vector-float*! (-> self control unknown-vector00) s5-1 f30-0) - (vector-float*! gp-1 gp-1 (/ f0-4 f1-0)) - ) + (if (< f30-0 (- (-> self control dynam gravity-max))) + (set! f30-0 (- (-> self control dynam gravity-max))) + ) + (vector+! + (-> self control unknown-vector00) + (vector-float*! (-> self control unknown-vector00) s5-1 f30-0) + (vector-float*! gp-1 gp-1 (/ f0-4 f1-0)) + ) + ) ) - ) ) (defbehavior target-compute-slopes target ((arg0 vector)) (let ((gp-0 (new-stack-vector0))) - (let ((a1-0 (new-stack-vector0)) - (s5-0 (new 'stack-no-clear 'matrix)) - ) - (set! (-> a1-0 quad) (-> self control unknown-matrix01 vector 2 quad)) - (forward-up-nopitch->inv-matrix s5-0 a1-0 arg0) - (set-vector! gp-0 0.0 0.0 1.0 1.0) - (vector-matrix*! gp-0 gp-0 s5-0) - (set! - (-> self control unknown-float63) - (- (vector-dot (-> self control surface-normal) gp-0)) - ) - (set! - (-> self control unknown-float61) - (- (vector-dot (-> self control local-normal) gp-0)) - ) - (set-vector! gp-0 1.0 0.0 0.0 1.0) - (vector-matrix*! gp-0 gp-0 s5-0) + (let ((a1-0 (new-stack-vector0)) + (s5-0 (new 'stack-no-clear 'matrix)) + ) + (set! (-> a1-0 quad) (-> self control unknown-matrix01 vector 2 quad)) + (forward-up-nopitch->inv-matrix s5-0 a1-0 arg0) + (set-vector! gp-0 0.0 0.0 1.0 1.0) + (vector-matrix*! gp-0 gp-0 s5-0) + (set! (-> self control unknown-float63) (- (vector-dot (-> self control surface-normal) gp-0))) + (set! (-> self control unknown-float61) (- (vector-dot (-> self control local-normal) gp-0))) + (set-vector! gp-0 1.0 0.0 0.0 1.0) + (vector-matrix*! gp-0 gp-0 s5-0) + ) + (set! (-> self control unknown-float64) (- (vector-dot (-> self control surface-normal) gp-0))) + (set! (-> self control unknown-float62) (- (vector-dot (-> self control local-normal) gp-0))) ) - (set! - (-> self control unknown-float64) - (- (vector-dot (-> self control surface-normal) gp-0)) - ) - (set! - (-> self control unknown-float62) - (- (vector-dot (-> self control local-normal) gp-0)) - ) - ) 0 ) (defbehavior do-rotations1 target () (rotate-toward-orientation! - (-> self control) - (-> self control dir-targ) - 0.0 - (-> self control unknown-surface01 tiltv) - ) + (-> self control) + (-> self control dir-targ) + 0.0 + (-> self control unknown-surface01 tiltv) + ) ) (defbehavior do-rotations2 target () - (let - ((gp-0 (vector-z-quaternion! (new-stack-vector0) (-> self control dir-targ))) - (s5-0 - (if - (and - (or - (zero? - (logand - (logior (-> self control status) (-> self control old-status)) - 5 + (let ((gp-0 (vector-z-quaternion! (new-stack-vector0) (-> self control dir-targ))) + (s5-0 + (if (and + (or + (zero? (logand (logior (-> self control status) (-> self control old-status)) 5)) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 150) + (!= (-> self next-state name) 'target-walk) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 150) + (logtest? (-> self control unknown-surface01 flags) 16) + (!= (-> self control unknown-float41) 0.0) + ) + (zero? (logand (-> self control unknown-surface01 flags) 32)) + ) + (-> self control unknown-vector20) + (-> self control transv) + ) ) - ) - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) - 150 - ) - (!= (-> self next-state name) 'target-walk) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) - 150 - ) - (logtest? (-> self control unknown-surface01 flags) 16) - (!= (-> self control unknown-float41) 0.0) ) - (zero? (logand (-> self control unknown-surface01 flags) 32)) - ) - (-> self control unknown-vector20) - (-> self control transv) - ) - ) - ) - (let* ((s3-0 (-> self control unknown-vector02)) - (s4-0 - (forward-up-nopitch->quaternion (new-stack-quaternion0) gp-0 s3-0) + (let* ((s3-0 (-> self control unknown-vector02)) + (s4-0 (forward-up-nopitch->quaternion (new-stack-quaternion0) gp-0 s3-0)) + (s3-1 (forward-up-nopitch->quaternion (new-stack-quaternion0) s5-0 s3-0)) + (f0-2 (acos (vector-dot gp-0 s5-0))) + (f1-2 (* (-> self control unknown-surface01 turnvv) (-> *display* seconds-per-frame))) ) - (s3-1 - (forward-up-nopitch->quaternion (new-stack-quaternion0) s5-0 s3-0) - ) - (f0-2 (acos (vector-dot gp-0 s5-0))) - (f1-2 - (* - (-> self control unknown-surface01 turnvv) - (-> *display* seconds-per-frame) - ) - ) - ) - (quaternion-slerp! (-> self control dir-targ) s4-0 s3-1 (cond - ((>= - 0.0 - (-> - self - control - unknown-float12 + (quaternion-slerp! (-> self control dir-targ) s4-0 s3-1 (cond + ((>= 0.0 (-> self control unknown-float12)) + 0.0 + ) + ((< f0-2 f1-2) + 1.0 + ) + (else + (/ f1-2 f0-2) + ) ) - ) - 0.0 - ) - ((< f0-2 f1-2) - 1.0 - ) - (else - (/ f1-2 f0-2) - ) - ) - ) + ) + ) + (add-debug-vector + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + gp-0 + (meters 2.0) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + ) + (add-debug-vector + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + s5-0 + (meters 2.0) + (new 'static 'rgba :r #xff :a #x80) + ) ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - gp-0 - (meters 2.0) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - s5-0 - (meters 2.0) - (new 'static 'rgba :r #xff :a #x80) - ) - ) (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - (-> self control unknown-matrix01 vector 2) - (meters 2.0) - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + (-> self control unknown-matrix01 vector 2) + (meters 2.0) + (new 'static 'rgba :r #xff :b #xff :a #x80) + ) (rotate-toward-orientation! - (-> self control) - (-> self control dir-targ) - (-> self control unknown-surface01 turnv) - 0.0 - ) + (-> self control) + (-> self control dir-targ) + (-> self control unknown-surface01 turnv) + 0.0 + ) (quaternion-slerp! - (-> self control quat) - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion01) - (-> self control unknown-float00) - ) + (-> self control quat) + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion01) + (-> self control unknown-float00) + ) (target-compute-slopes (-> self control dynam gravity-normal)) ) (defbehavior level-setup target () (let ((gp-0 (-> self current-level))) - (set! (-> self current-level) (level-get-target-inside *level*)) - (if - (and - (-> self current-level) - (>= (-> *level-task-data-remap* length) (-> self current-level info index)) - ) - (+! - (-> - *game-info* - in-level-time - (-> *level-task-data-remap* (+ (-> self current-level info index) -1)) - ) - (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) - ) + (set! (-> self current-level) (level-get-target-inside *level*)) + (if (and (-> self current-level) (>= (-> *level-task-data-remap* length) (-> self current-level info index))) + (+! + (-> *game-info* in-level-time (-> *level-task-data-remap* (+ (-> self current-level info index) -1))) + (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) + ) + ) + (if (and (or (not gp-0) (!= (-> gp-0 name) (-> self current-level name))) (-> self current-level)) + (send-event self 'level-enter (-> self current-level name)) + ) ) - (if - (and - (or (not gp-0) (!= (-> gp-0 name) (-> self current-level name))) - (-> self current-level) - ) - (send-event self 'level-enter (-> self current-level name)) - ) - ) 0 (none) ) @@ -1349,497 +997,319 @@ (set! (-> self control unknown-vector10 quad) (-> self control transv quad)) ((-> self control unknown-surface01 active-hook)) (cond - ((logtest? (-> self control status) 1) - (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) - (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - (if - (and - (>= (-> self control coverage) 1.0) - (zero? (logand (-> self control status) 1056)) - (logtest? (-> self control status) 2) - ) - (set! (-> self control unknown-vector54 quad) (-> self control trans quad)) - ) - ((-> self control unknown-surface01 touch-hook)) - ) - (else - (let ((v1-25 (-> self control trans))) - (when (logtest? (-> self control old-status) 1) - (set! - (-> self control unknown-vector110 quad) - (-> self control unknown-vector52 quad) - ) - (set! - (-> self control unknown-vector111 quad) - (-> self control unknown-vector52 quad) - ) - ) - (set! (-> self control unknown-vector111 x) (-> v1-25 x)) - (set! (-> self control unknown-vector111 z) (-> v1-25 z)) - (if - (< - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector111) - v1-25 + ((logtest? (-> self control status) 1) + (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (if (and + (>= (-> self control coverage) 1.0) + (zero? (logand (-> self control status) 1056)) + (logtest? (-> self control status) 2) + ) + (set! (-> self control unknown-vector54 quad) (-> self control trans quad)) ) - ) - 0.0 - ) - (set! (-> self control unknown-vector111 y) (-> v1-25 y)) - ) + ((-> self control unknown-surface01 touch-hook)) ) - ) - ) - (when - (and - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 0 - ) - (pad-buttons triangle) - ) - (zero? (-> self control unknown-int40)) - (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) - ) - (if - (and - (= (-> self cam-user-mode) 'normal) - (logtest? (-> self control unknown-surface00 flags) 1) - (zero? (logand (-> self control root-prim prim-core action) #x7380)) - (-> *setting-control* current allow-look-around) - (>= - (- - (-> *display* base-frame-counter) - (the-as int (-> self no-look-around-wait)) - ) - 15 - ) - (not - (and - (= (-> self control ground-pat material) (pat-material ice)) - (< 4096.0 (-> self control unknown-float01)) - ) - ) - ) - (send-event self 'change-mode 'look-around) - ) - ) - (when - (and - (= *cheat-mode* 'debug) - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons r2) - ) - (not *pause-lock*) - (zero? (logand (-> self state-flags) 768)) - ) - (if (!= (-> self next-state name) 'target-falling) - (send-event self 'change-mode 'falling) - ) - (let ((gp-0 (new-stack-vector0))) - (let - ((f0-8 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) - ) - ) - 0.0 - (vector-! - gp-0 - (-> self control transv) - (vector-float*! gp-0 (-> self control dynam gravity-normal) f0-8) - ) - ) - (let* ((f0-9 (vector-length gp-0)) - (f1-4 f0-9) - (f2-0 0.0) - ) - (vector+! - (-> self control transv) - (vector-float*! - (-> self control transv) - (-> self control dynam gravity-normal) - f2-0 - ) - (vector-float*! gp-0 gp-0 (/ f0-9 f1-4)) - ) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self control trans quad)) - (let ((s5-0 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control dynam gravity-normal) gp-1)) + (else + (let ((v1-25 (-> self control trans))) + (when (logtest? (-> self control old-status) 1) + (set! (-> self control unknown-vector110 quad) (-> self control unknown-vector52 quad)) + (set! (-> self control unknown-vector111 quad) (-> self control unknown-vector52 quad)) ) - 0.0 - (vector-! - s5-0 - gp-1 - (vector-float*! s5-0 (-> self control dynam gravity-normal) f30-0) - ) - (let* ((f0-14 (vector-length s5-0)) - (f1-5 f0-14) - (f2-2 (+ 512.0 f30-0)) + (set! (-> self control unknown-vector111 x) (-> v1-25 x)) + (set! (-> self control unknown-vector111 z) (-> v1-25 z)) + (if (< (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) v1-25) + ) + 0.0 + ) + (set! (-> self control unknown-vector111 y) (-> v1-25 y)) ) - (vector+! - gp-1 - (vector-float*! gp-1 (-> self control dynam gravity-normal) f2-2) - (vector-float*! s5-0 s5-0 (/ f0-14 f1-5)) - ) + ) ) - ) - (TODO-RENAME-30 (-> self control) gp-1) ) - (send-event *camera* 'reset-follow) - (set! (-> self control surf) *standard-ground-surface*) - ) - (let - ((f0-17 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) - ) - ) - (if - (and - (or - (logtest? (-> self control unknown-surface01 flags) 1024) - (and - (= (-> self next-state name) 'target-walk) - (zero? (logand (-> self control status) 1)) - ) - ) - (< f0-17 0.0) - (or - (not - (and - (= *cheat-mode* 'debug) - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 + (when (and + (logtest? + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons triangle) + ) + (zero? (-> self control unknown-int40)) + (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) ) - (pad-buttons r2) - ) + (if (and + (= (-> self cam-user-mode) 'normal) + (logtest? (-> self control unknown-surface00 flags) 1) + (zero? (logand (-> self control root-prim prim-core action) #x7380)) + (-> *setting-control* current allow-look-around) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self no-look-around-wait))) 15) + (not (and + (= (-> self control ground-pat material) (pat-material ice)) + (< 4096.0 (-> self control unknown-float01)) + ) + ) + ) + (send-event self 'change-mode 'look-around) + ) + ) + (when (and + (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + (not *pause-lock*) + (zero? (logand (-> self state-flags) 768)) + ) + (if (!= (-> self next-state name) 'target-falling) + (send-event self 'change-mode 'falling) + ) + (let ((gp-0 (new-stack-vector0))) + (let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f0-8)) + ) + (let* ((f0-9 (vector-length gp-0)) + (f1-4 f0-9) + (f2-0 0.0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-0 gp-0 (/ f0-9 f1-4)) + ) + ) + ) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self control trans quad)) + (let ((s5-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) gp-1)) + ) + 0.0 + (vector-! s5-0 gp-1 (vector-float*! s5-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-14 (vector-length s5-0)) + (f1-5 f0-14) + (f2-2 (+ 512.0 f30-0)) + ) + (vector+! + gp-1 + (vector-float*! gp-1 (-> self control dynam gravity-normal) f2-2) + (vector-float*! s5-0 s5-0 (/ f0-14 f1-5)) + ) + ) + ) + (TODO-RENAME-30 (-> self control) gp-1) + ) + (send-event *camera* 'reset-follow) + (set! (-> self control surf) *standard-ground-surface*) + ) + (let ((f0-17 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (if (and + (or + (logtest? (-> self control unknown-surface01 flags) 1024) + (and (= (-> self next-state name) 'target-walk) (zero? (logand (-> self control status) 1))) + ) + (< f0-17 0.0) + (or + (not + (and + (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) + *pause-lock* + ) + (and + (>= (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + ) + 9420.8 + ) + (zero? (logand (-> self control root-prim prim-core action) #x4200)) + #t + ) + ) + (logior! (-> self control root-prim prim-core action) 64) + (set! (-> self control root-prim prim-core action) (logand -65 (-> self control root-prim prim-core action))) ) - ) - *pause-lock* - ) - (and - (>= - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control trans) - (-> self control shadow-pos) - ) - ) - 9420.8 - ) - (zero? (logand (-> self control root-prim prim-core action) #x4200)) - #t - ) - ) - (logior! (-> self control root-prim prim-core action) 64) - (set! - (-> self control root-prim prim-core action) - (logand -65 (-> self control root-prim prim-core action)) - ) ) - ) (let ((v1-146 (-> self current-level))) - (when - (and - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - 600 - ) - (and - v1-146 - (< (-> self control trans y) (-> v1-146 info bottom-height)) - (not - (and - (= *cheat-mode* 'debug) - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 + (when (and + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 600) + (and + v1-146 + (< (-> self control trans y) (-> v1-146 info bottom-height)) + (not + (and + (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) + ) + ) + (let ((a1-32 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-32 from) self) + (set! (-> a1-32 num-params) 2) + (set! (-> a1-32 message) 'attack-invinc) + (set! (-> a1-32 param 0) (the-as uint #f)) + (let ((a0-102 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-102 mode) 'endlessfall) + (set! (-> a1-32 param 1) (the-as uint a0-102)) ) - (pad-buttons r2) - ) + (send-event-function self a1-32) ) - ) ) - ) - (let ((a1-32 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-32 from) self) - (set! (-> a1-32 num-params) 2) - (set! (-> a1-32 message) 'attack-invinc) - (set! (-> a1-32 param 0) (the-as uint #f)) - (let ((a0-102 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-102 mode) 'endlessfall) - (set! (-> a1-32 param 1) (the-as uint a0-102)) - ) - (send-event-function self a1-32) - ) ) - ) 0 (none) ) (defbehavior post-flag-setup target () (if (logtest? (-> self control status) 40) - (set! (-> self control unknown-dword20) (-> *display* base-frame-counter)) - ) - (when (logtest? (-> self state-flags) 32) - (if - (< - (logand - (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) - 3 + (set! (-> self control unknown-dword20) (-> *display* base-frame-counter)) ) - 1 - ) - (logior! (-> self draw status) 2) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (when (logtest? (-> self state-flags) 32) + (if (< (logand (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) 3) 1) + (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) + ) + (if (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) (-> self control unknown-dword81)) + (target-timed-invulnerable-off self) + ) ) - (if - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) - (-> self control unknown-dword81) - ) - (target-timed-invulnerable-off self) - ) - ) (set! (-> self control unknown-symbol40) #f) 0 (none) ) (defbehavior bend-gravity target () - (set! - (-> self control unknown-float82) - (if (logtest? (-> self control status) 1) - 32.0 - 2.0 + (set! (-> self control unknown-float82) (if (logtest? (-> self control status) 1) + 32.0 + 2.0 + ) + ) + (let ((f0-2 (if (and (logtest? (-> self control status) 8) (zero? (logand (-> self control status) 1))) + 0.0 + (-> self control unknown-float81) + ) + ) + ) + (set! (-> self control unknown-float80) + (seek + (-> self control unknown-float80) + f0-2 + (* (-> self control unknown-float82) (-> *display* seconds-per-frame)) + ) + ) ) - ) - (let - ((f0-2 - (if - (and - (logtest? (-> self control status) 8) - (zero? (logand (-> self control status) 1)) - ) - 0.0 - (-> self control unknown-float81) - ) - ) - ) - (set! + (vector-deg-slerp + (-> self control dynam gravity-normal) + (-> self control unknown-dynamics00 gravity-normal) + (-> self control ground-poly-normal) (-> self control unknown-float80) - (seek - (-> self control unknown-float80) - f0-2 - (* (-> self control unknown-float82) (-> *display* seconds-per-frame)) - ) ) - ) - (vector-deg-slerp - (-> self control dynam gravity-normal) - (-> self control unknown-dynamics00 gravity-normal) - (-> self control ground-poly-normal) - (-> self control unknown-float80) - ) (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) - (set! - (-> self control dynam gravity-normal quad) - (-> self control unknown-dynamics00 gravity-normal quad) - ) + (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)) + ) + (set! (-> self control dynam gravity-normal quad) (-> self control unknown-dynamics00 gravity-normal quad)) (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) + (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)) + ) (vector-deg-slerp - (-> self control unknown-vector02) - (-> self control unknown-dynamics00 gravity-normal) - (-> self control ground-poly-normal) - (-> self control unknown-float80) - ) + (-> self control unknown-vector02) + (-> self control unknown-dynamics00 gravity-normal) + (-> self control ground-poly-normal) + (-> self control unknown-float80) + ) (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - (-> self control ground-poly-normal) - (meters 2.0) - (new 'static 'rgba :b #xff :a #x80) - ) + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + (-> self control ground-poly-normal) + (meters 2.0) + (new 'static 'rgba :b #xff :a #x80) + ) (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - (-> self control local-normal) - (meters 2.0) - (new 'static 'rgba :b #xff :a #x80) - ) + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + (-> self control local-normal) + (meters 2.0) + (new 'static 'rgba :b #xff :a #x80) + ) (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - (-> self control unknown-dynamics00 gravity-normal) - (meters 2.5) - (new 'static 'rgba :r #xff :a #x80) - ) + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + (-> self control unknown-dynamics00 gravity-normal) + (meters 2.5) + (new 'static 'rgba :r #xff :a #x80) + ) (add-debug-vector - *display-target-marks* - (bucket-id debug-draw1) - (-> self control trans) - (-> self control dynam gravity-normal) - (meters 3.0) - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) + *display-target-marks* + (bucket-id debug-draw1) + (-> self control trans) + (-> self control dynam gravity-normal) + (meters 3.0) + (new 'static 'rgba :r #xff :b #xff :a #x80) + ) ) (defbehavior target-compute-edge target () (let ((s5-0 *edge-grab-info*)) - (if (not (dummy-9 s5-0)) - (send-event self 'end-mode) - ) - (if *display-edge-collision-marks* - (dummy-10 s5-0) - ) - (set! - (-> self control ground-pat) - (the-as pat-surface (-> s5-0 edge-tri-pat)) - ) - (vector-normalize! - (vector-! - (-> self control unknown-vector100) - (the-as vector (-> s5-0 world-vertex)) - (-> s5-0 world-vertex 1) - ) - 1.0 - ) - (let - ((gp-1 - (vector-cross! - (-> self control unknown-vector101) - (-> self control unknown-vector100) - (-> self control dynam gravity-normal) - ) - ) - ) - (let - ((s4-1 - (vector-! - (new-stack-vector0) - (-> s5-0 center-hold) - (-> self control unknown-vector90) - ) - ) - ) - (set! (-> self control unknown-float110) (vector-length s4-1)) - (cond - ((and - (< 819.2 (-> self control unknown-float110)) - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) - 60 - ) - ) - (vector-normalize! s4-1 1228.8) - (TODO-RENAME-28 (-> self control) s4-1) - (vector-float*! - (-> self control rider-last-move) - s4-1 - (-> *display* frames-per-second) - ) - (set! - (-> self control rider-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (if - (and - (>= - (- - (-> *display* base-frame-counter) - (-> self control unknown-dword41) - ) - 150 - ) - (>= - (- - (-> *display* base-frame-counter) - (-> self control unknown-dword40) - ) - 150 - ) - ) + (if (not (dummy-9 s5-0)) (send-event self 'end-mode) ) - ) - (else - (let ((a1-6 (new 'stack-no-clear 'vector))) - (vector-! a1-6 (-> s5-0 center-hold) (-> self control unknown-vector91)) - (vector-float*! - (-> self control rider-last-move) - s4-1 - (-> *display* frames-per-second) - ) - (set! - (-> self control rider-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (TODO-RENAME-30 (-> self control) a1-6) + (if *display-edge-collision-marks* + (dummy-10 s5-0) ) - (set! (-> self control unknown-float110) 0.0) - (set! - (-> self control unknown-vector52 quad) - (-> self control trans quad) - ) - (set! - (-> self control unknown-dword40) - (-> *display* base-frame-counter) - ) - ) + (set! (-> self control ground-pat) (the-as pat-surface (-> s5-0 edge-tri-pat))) + (vector-normalize! + (vector-! (-> self control unknown-vector100) (the-as vector (-> s5-0 world-vertex)) (-> s5-0 world-vertex 1)) + 1.0 + ) + (let ((gp-1 (vector-cross! + (-> self control unknown-vector101) + (-> self control unknown-vector100) + (-> self control dynam gravity-normal) + ) + ) + ) + (let ((s4-1 (vector-! (new-stack-vector0) (-> s5-0 center-hold) (-> self control unknown-vector90)))) + (set! (-> self control unknown-float110) (vector-length s4-1)) + (cond + ((and + (< 819.2 (-> self control unknown-float110)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 60) + ) + (vector-normalize! s4-1 1228.8) + (TODO-RENAME-28 (-> self control) s4-1) + (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) + (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) + (if (and + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword41)) 150) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 150) + ) + (send-event self 'end-mode) + ) + ) + (else + (let ((a1-6 (new 'stack-no-clear 'vector))) + (vector-! a1-6 (-> s5-0 center-hold) (-> self control unknown-vector91)) + (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) + (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) + (TODO-RENAME-30 (-> self control) a1-6) + ) + (set! (-> self control unknown-float110) 0.0) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (set! (-> self control unknown-dword40) (-> *display* base-frame-counter)) + ) + ) + ) + (forward-up-nopitch->quaternion (-> self control dir-targ) gp-1 (-> self control dynam gravity-normal)) ) - ) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - gp-1 - (-> self control dynam gravity-normal) - ) ) - ) (set-quaternion! (-> self control) (-> self control dir-targ)) (dummy-17 self) (none) @@ -1847,46 +1317,27 @@ (defbehavior target-compute-edge-rider target () (let ((gp-0 *edge-grab-info*)) - (if (not (dummy-9 gp-0)) - (send-event self 'end-mode) - ) - (if *display-edge-collision-marks* - (dummy-10 gp-0) - ) - (vector-normalize! - (vector-! - (-> self control unknown-vector100) - (the-as vector (-> gp-0 world-vertex)) - (-> gp-0 world-vertex 1) - ) - 1.0 - ) - (vector-cross! - (-> self control unknown-vector101) - (-> self control unknown-vector100) - (-> self control dynam gravity-normal) - ) - (let - ((a1-7 - (vector-! - (new-stack-vector0) - (-> gp-0 center-hold) - (-> gp-0 center-hold-old) - ) + (if (not (dummy-9 gp-0)) + (send-event self 'end-mode) + ) + (if *display-edge-collision-marks* + (dummy-10 gp-0) + ) + (vector-normalize! + (vector-! (-> self control unknown-vector100) (the-as vector (-> gp-0 world-vertex)) (-> gp-0 world-vertex 1)) + 1.0 + ) + (vector-cross! + (-> self control unknown-vector101) + (-> self control unknown-vector100) + (-> self control dynam gravity-normal) + ) + (let ((a1-7 (vector-! (new-stack-vector0) (-> gp-0 center-hold) (-> gp-0 center-hold-old)))) + (vector-float*! (-> self control rider-last-move) a1-7 (-> *display* frames-per-second)) + (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) + (TODO-RENAME-28 (-> self control) a1-7) ) - ) - (vector-float*! - (-> self control rider-last-move) - a1-7 - (-> *display* frames-per-second) - ) - (set! - (-> self control rider-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (TODO-RENAME-28 (-> self control) a1-7) ) - ) (set! (-> self control unknown-float110) 0.0) (dummy-17 self) (none) @@ -1896,143 +1347,83 @@ (let* ((s4-0 (handle->process (-> self control unknown-handle10))) (gp-0 (-> (the-as swingpole s4-0) dir)) ) - (set! (-> self control unknown-vector100 quad) (-> gp-0 quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let - ((s3-0 - (vector+float*! - (new 'stack-no-clear 'vector) - (-> (the-as swingpole s4-0) root trans) - gp-0 - (-> (the-as swingpole s4-0) edge-length) + (set! (-> self control unknown-vector100 quad) (-> gp-0 quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((s3-0 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s4-0) root trans) + gp-0 + (-> (the-as swingpole s4-0) edge-length) + ) + ) + (s2-0 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s4-0) root trans) + gp-0 + (- (-> (the-as swingpole s4-0) edge-length)) + ) + ) + ) + (let ((v1-8 (new 'stack-no-clear 'vector))) + (vector+! v1-8 s3-0 s2-0) + (vector-float*! v1-8 v1-8 0.5) + (set! (-> v1-8 y) (+ -6144.0 (-> v1-8 y))) + (send-event *camera* 'ease-in 0.5 v1-8) + ) + (vector-segment-distance-point! (-> self control unknown-vector90) s3-0 s2-0 s5-0) + (when *display-edge-collision-marks* + (add-debug-vector + #t + (bucket-id debug-draw1) + (-> (the-as swingpole s4-0) root trans) + (the-as vector (&-> s4-0 stack 16)) + (meters 3.0) + (new 'static 'rgba :r #xff :b #xff :a #x80) + ) + (add-debug-sphere + #t + (bucket-id debug-draw1) + (-> (the-as swingpole s4-0) root trans) + (-> (the-as swingpole s4-0) range) + (new 'static 'rgba :r #xff :g #xff :a #x80) + ) + (add-debug-sphere + #t + (bucket-id debug-draw0) + (-> self control unknown-vector90) + 819.2 + (new 'static 'rgba :r #xff :a #x80) + ) + (add-debug-sphere #t (bucket-id debug-draw1) s3-0 819.2 (new 'static 'rgba :g #xff :a #x80)) + (add-debug-sphere #t (bucket-id debug-draw1) s2-0 819.2 (new 'static 'rgba :g #xff :b #x40 :a #x80)) + (add-debug-sphere #t (bucket-id debug-draw1) s5-0 819.2 (new 'static 'rgba :b #xff :a #x80)) + ) ) - ) - (s2-0 - (vector+float*! - (new 'stack-no-clear 'vector) - (-> (the-as swingpole s4-0) root trans) - gp-0 - (- (-> (the-as swingpole s4-0) edge-length)) + (let ((s4-2 (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector90)))) + (cond + ((and (< 2457.6 (vector-length s4-2)) (not (-> self control unknown-int21))) + (TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6)) + ) + (else + (set! (-> self control unknown-int21) (the-as int #t)) + (TODO-RENAME-30 + (-> self control) + (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector91)) + ) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + ) + ) ) - ) ) - (let ((v1-8 (new 'stack-no-clear 'vector))) - (vector+! v1-8 s3-0 s2-0) - (vector-float*! v1-8 v1-8 0.5) - (set! (-> v1-8 y) (+ -6144.0 (-> v1-8 y))) - (send-event *camera* 'ease-in 0.5 v1-8) + (let ((s5-3 (vector-cross! (-> self control unknown-vector101) gp-0 (-> self control dynam gravity-normal)))) + (if (>= 0.0 + (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) + ) + (vector-negate! s5-3 s5-3) + ) + (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) ) - (vector-segment-distance-point! - (-> self control unknown-vector90) - s3-0 - s2-0 - s5-0 - ) - (when *display-edge-collision-marks* - (add-debug-vector - #t - (bucket-id debug-draw1) - (-> (the-as swingpole s4-0) root trans) - (the-as vector (&-> s4-0 stack 16)) - (meters 3.0) - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-draw1) - (-> (the-as swingpole s4-0) root trans) - (-> (the-as swingpole s4-0) range) - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-draw0) - (-> self control unknown-vector90) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-draw1) - s3-0 - 819.2 - (new 'static 'rgba :g #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-draw1) - s2-0 - 819.2 - (new 'static 'rgba :g #xff :b #x40 :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-draw1) - s5-0 - 819.2 - (new 'static 'rgba :b #xff :a #x80) - ) - ) - ) - (let - ((s4-2 - (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector90)) - ) - ) - (cond - ((and - (< 2457.6 (vector-length s4-2)) - (not (-> self control unknown-int21)) - ) - (TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6)) - ) - (else - (set! (-> self control unknown-int21) (the-as int #t)) - (TODO-RENAME-30 - (-> self control) - (vector-! - (new 'stack-no-clear 'vector) - s5-0 - (-> self control unknown-vector91) - ) - ) - (set! - (-> self control unknown-vector52 quad) - (-> self control trans quad) - ) - ) - ) - ) ) - (let - ((s5-3 - (vector-cross! - (-> self control unknown-vector101) - gp-0 - (-> self control dynam gravity-normal) - ) - ) - ) - (if - (>= - 0.0 - (vector-dot - s5-3 - (vector-z-quaternion! - (new 'stack-no-clear 'vector) - (-> self control unknown-quaternion00) - ) - ) - ) - (vector-negate! s5-3 s5-3) - ) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - s5-3 - (-> self control dynam gravity-normal) - ) - ) - ) (set-quaternion! (-> self control) (-> self control dir-targ)) (dummy-17 self) (dummy-47 (-> self control)) @@ -2041,185 +1432,117 @@ (defbehavior target-calc-camera-pos target () (let ((gp-0 (new 'stack-no-clear 'vector))) - (cond - ((and - (= (-> self next-state name) 'target-clone-anim) - (zero? (logand (-> self draw status) 2)) - (begin - (vector<-cspace! gp-0 (-> self node-list data 3)) - (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) - (< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0) - ) - ) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> gp-0 quad)) - ) - (else - (let ((v1-11 (-> self water flags))) - (cond - ((and (logtest? v1-11 512) (logtest? v1-11 6144)) - (vector<-cspace! - (the-as vector (&-> (-> self control) unknown-qword00)) - (the-as cspace (-> self node-list data)) - ) - (if - (not - (and - (logtest? (-> self water flags) 4096) - (zero? (logand (-> self water flags) 16)) + (cond + ((and + (= (-> self next-state name) 'target-clone-anim) + (zero? (logand (-> self draw status) (draw-status drwf01))) + (begin + (vector<-cspace! gp-0 (-> self node-list data 3)) + (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) + (< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0) ) - ) - (set! - (-> self control unknown-float30) - (- (-> self water base-height) (-> self water swim-height)) - ) ) - (&-> (-> self control) unknown-qword00) - ) - ((and - (logtest? (-> self water flags) 512) - (logtest? #x40000 (-> self water flags)) - ) - (vector<-cspace! - (the-as vector (&-> (-> self control) unknown-qword00)) - (the-as cspace (-> self node-list data)) - ) - (set! (-> self control unknown-float30) (-> self water base-height)) - ) - ((logtest? (-> self control root-prim prim-core action) 512) - (set! - (-> (&-> (-> self control) unknown-qword00) 0) - (-> self control trans quad) - ) - ) - ((logtest? (-> self control root-prim prim-core action) 8192) - (set! - (-> (&-> (-> self control) unknown-qword00) 0) - (-> self control shadow-pos quad) - ) - ) - ((logtest? (-> self draw status) 6) - (set! - (-> (&-> (-> self control) unknown-qword00) 0) - (-> self control trans quad) - ) - ) - (else - (vector<-cspace! - (the-as vector (&-> (-> self control) unknown-qword00)) - (the-as cspace (-> self node-list data)) - ) - ) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> gp-0 quad)) ) + (else + (let ((v1-11 (-> self water flags))) + (cond + ((and (logtest? v1-11 512) (logtest? v1-11 6144)) + (vector<-cspace! + (the-as vector (&-> (-> self control) unknown-qword00)) + (the-as cspace (-> self node-list data)) + ) + (if (not (and (logtest? (-> self water flags) 4096) (zero? (logand (-> self water flags) 16)))) + (set! (-> self control unknown-float30) (- (-> self water base-height) (-> self water swim-height))) + ) + (&-> (-> self control) unknown-qword00) + ) + ((and (logtest? (-> self water flags) 512) (logtest? #x40000 (-> self water flags))) + (vector<-cspace! + (the-as vector (&-> (-> self control) unknown-qword00)) + (the-as cspace (-> self node-list data)) + ) + (set! (-> self control unknown-float30) (-> self water base-height)) + ) + ((logtest? (-> self control root-prim prim-core action) 512) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) + ) + ((logtest? (-> self control root-prim prim-core action) 8192) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) + ) + ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) + ) + (else + (vector<-cspace! + (the-as vector (&-> (-> self control) unknown-qword00)) + (the-as cspace (-> self node-list data)) + ) + ) + ) + ) + ) ) - ) ) - ) 0 (none) ) (defbehavior joint-points target () (let ((v1-0 (-> self neck))) - (set! (-> v1-0 blend) 0.0) - ) + (set! (-> v1-0 blend) 0.0) + ) (cond - ((logtest? (-> self control root-prim prim-core action) 8704) - ) - ((logtest? (-> self water flags) 1024) - (let - ((f30-0 - (- - (- - (-> self control trans y) - (- (-> self water height) (-> self water wade-height)) + ((logtest? (-> self control root-prim prim-core action) 8704) + ) + ((logtest? (-> self water flags) 1024) + (let ((f30-0 (- (- (-> self control trans y) (- (-> self water height) (-> self water wade-height)))))) + (set! (-> *wade-surface* alignv) + (lerp-scale 1.0 0.5 f30-0 0.0 (- (-> self water swim-height) (-> self water wade-height))) + ) + (set! (-> *wade-surface* align-speed) (-> *wade-surface* alignv)) + (let ((f0-9 (lerp-scale 0.8 0.6 f30-0 0.0 (- (-> self water swim-height) (-> self water wade-height))))) + (set! (-> *wade-surface* target-speed) f0-9) + (set! (-> *wade-surface* transv-max) f0-9) ) + ) + (set! (-> self control surf) *wade-surface*) + ) + ((logtest? (-> self water flags) 2048) + (set! (-> self control surf) *swim-surface*) + ) + ((and (logtest? (-> self water flags) 512) (logtest? #x40000 (-> self water flags))) + (set! (-> self control surf) *quicksand-surface*) + ) + ) + (let ((a2-2 + (matrix<-no-trans-transformq! (-> self control unknown-matrix02) (the-as transformq (-> self control trans))) + ) ) - ) - ) - (set! - (-> *wade-surface* alignv) - (lerp-scale - 1.0 - 0.5 - f30-0 - 0.0 - (- (-> self water swim-height) (-> self water wade-height)) - ) - ) - (set! (-> *wade-surface* align-speed) (-> *wade-surface* alignv)) - (let - ((f0-9 - (lerp-scale - 0.8 - 0.6 - f30-0 - 0.0 - (- (-> self water swim-height) (-> self water wade-height)) - ) - ) - ) - (set! (-> *wade-surface* target-speed) f0-9) - (set! (-> *wade-surface* transv-max) f0-9) - ) - ) - (set! (-> self control surf) *wade-surface*) + (vector-matrix*! (-> self control unknown-vector80) (-> *TARGET-bank* head-offset) a2-2) ) - ((logtest? (-> self water flags) 2048) - (set! (-> self control surf) *swim-surface*) - ) - ((and - (logtest? (-> self water flags) 512) - (logtest? #x40000 (-> self water flags)) - ) - (set! (-> self control surf) *quicksand-surface*) - ) - ) - (let - ((a2-2 - (matrix<-no-trans-transformq! - (-> self control unknown-matrix02) - (the-as transformq (-> self control trans)) - ) - ) - ) - (vector-matrix*! - (-> self control unknown-vector80) - (-> *TARGET-bank* head-offset) - a2-2 - ) - ) - (vector<-cspace! - (-> self control unknown-vector92) - (-> self control unknown-cspace10 parent) - ) + (vector<-cspace! (-> self control unknown-vector92) (-> self control unknown-cspace10 parent)) (let ((gp-0 (new-stack-vector0)) (s5-0 (new-stack-vector0)) ) - (vector<-cspace! gp-0 (-> self control unknown-cspace00 parent)) - (vector<-cspace! - s5-0 - (the-as cspace (-> self control unknown-cspace00 joint)) + (vector<-cspace! gp-0 (-> self control unknown-cspace00 parent)) + (vector<-cspace! s5-0 (the-as cspace (-> self control unknown-cspace00 joint))) + (vector-average! (-> self control unknown-vector90) gp-0 s5-0) ) - (vector-average! (-> self control unknown-vector90) gp-0 s5-0) - ) - (vector-! - (-> self control unknown-vector91) - (-> self control unknown-vector90) - (-> self control trans) - ) + (vector-! (-> self control unknown-vector91) (-> self control unknown-vector90) (-> self control trans)) (cond - ((logtest? (-> self control root-prim prim-core action) 128) - (target-compute-edge) + ((logtest? (-> self control root-prim prim-core action) 128) + (target-compute-edge) + ) + ((logtest? (-> self control root-prim prim-core action) 256) + (target-compute-pole) + ) ) - ((logtest? (-> self control root-prim prim-core action) 256) - (target-compute-pole) - ) - ) (target-calc-camera-pos) (when (logtest? (-> self state-flags) #x4000) - (set! (-> self state-flags) (logand -28673 (-> self state-flags))) - (set! (-> self control unknown-float41) 0.0) - ) + (set! (-> self state-flags) (logand -28673 (-> self state-flags))) + (set! (-> self control unknown-float41) 0.0) + ) (set! (-> self control unknown-int00) 0) 0 (none) @@ -2227,111 +1550,97 @@ (defbehavior target-real-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (if (< (-> self control unknown-float41) 0.0) - (set! - (-> self control unknown-float41) - (- 1.0 (-> self control unknown-cpad-info00 stick0-speed)) - ) - ) - (build-conversions (-> self control transv)) - (do-rotations1) - (let ((s4-0 (new-stack-vector0))) - (read-pad s4-0) - (let ((f30-0 (-> self control unknown-float20))) - (if - (and - (< 0.0 f30-0) - (< 0.3 (-> self control unknown-float20)) - (< - (vector-dot - (-> self control unknown-vector30) - (-> self control unknown-vector31) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (if (< (-> self control unknown-float41) 0.0) + (set! (-> self control unknown-float41) (- 1.0 (-> self control unknown-cpad-info00 stick0-speed))) ) - 0.2 - ) - (< f30-0 0.7) - ) - (set! f30-0 0.0) - ) - (when (!= (-> self control unknown-float41) 0.0) - (let ((f0-12 (fmin 1.0 (-> self control unknown-float41)))) - (set! (-> self control unknown-float41) f0-12) - (let - ((a1-2 (vector-float*! (new 'stack-no-clear 'vector) (if (= f30-0 0.0) - *zero-vector* - s4-0 - ) - f30-0 - ) - ) - (a2-1 - (vector-float*! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector40) - (-> self control unknown-float50) + (build-conversions (-> self control transv)) + (do-rotations1) + (let ((s4-0 (new-stack-vector0))) + (read-pad s4-0) + (let ((f30-0 (-> self control unknown-float20))) + (if (and + (< 0.0 f30-0) + (< 0.3 (-> self control unknown-float20)) + (< (vector-dot (-> self control unknown-vector30) (-> self control unknown-vector31)) 0.2) + (< f30-0 0.7) + ) + (set! f30-0 0.0) + ) + (when (!= (-> self control unknown-float41) 0.0) + (let ((f0-12 (fmin 1.0 (-> self control unknown-float41)))) + (set! (-> self control unknown-float41) f0-12) + (let ((a1-2 (vector-float*! + (new 'stack-no-clear 'vector) + (if (= f30-0 0.0) + *zero-vector* + s4-0 + ) + f30-0 + ) + ) + (a2-1 (vector-float*! + (new 'stack-no-clear 'vector) + (-> self control unknown-vector40) + (-> self control unknown-float50) + ) + ) + ) + (vector-lerp! s4-0 a1-2 a2-1 f0-12) + ) + ) + (set! f30-0 (vector-length s4-0)) + (vector-normalize! s4-0 1.0) ) - ) + (turn-to-vector s4-0 f30-0) ) - (vector-lerp! s4-0 a1-2 a2-1 f0-12) - ) ) - (set! f30-0 (vector-length s4-0)) - (vector-normalize! s4-0 1.0) - ) - (turn-to-vector s4-0 f30-0) + (add-thrust) + (add-gravity) + (do-rotations2) + (reverse-conversions (-> self control transv)) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (set! (-> self control reaction) target-collision-reaction) + (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) + (if (logtest? (-> self control root-prim prim-core action) 64) + (dummy-20 *target* *collide-cache*) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) + ) + ) + (bend-gravity) + (post-flag-setup) ) - ) - (add-thrust) - (add-gravity) - (do-rotations2) - (reverse-conversions (-> self control transv)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (set! (-> self control reaction) target-collision-reaction) - (dummy-33 - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) - (if (logtest? (-> self control root-prim prim-core action) 64) - (dummy-20 *target* *collide-cache*) - ) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) - ) - ) - (bend-gravity) - (post-flag-setup) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :a #x80) + ) + ) (joint-points) (do-target-shadow) (target-powerup-process) @@ -2345,61 +1654,57 @@ (defbehavior target-swim-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (build-conversions (-> self control transv)) - (do-rotations1) - (let ((s4-0 (new-stack-vector0))) - (read-pad s4-0) - (turn-to-vector s4-0 (-> self control unknown-float20)) - ) - (add-thrust) - (add-gravity) - (do-rotations2) - (reverse-conversions (-> self control transv)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (build-conversions (-> self control transv)) + (do-rotations1) + (let ((s4-0 (new-stack-vector0))) + (read-pad s4-0) + (turn-to-vector s4-0 (-> self control unknown-float20)) + ) + (add-thrust) + (add-gravity) + (do-rotations2) + (reverse-conversions (-> self control transv)) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) + (if (logtest? (-> self control root-prim prim-core action) 64) + (dummy-20 *target* *collide-cache*) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) + ) + ) + (post-flag-setup) ) - ) - (dummy-33 - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) - (if (logtest? (-> self control root-prim prim-core action) 64) - (dummy-20 *target* *collide-cache*) - ) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) - ) - ) - (post-flag-setup) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :a #x80) + ) + ) (joint-points) (do-target-shadow) (target-powerup-process) @@ -2408,62 +1713,58 @@ (defbehavior target-no-stick-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (build-conversions (-> self control transv)) - (do-rotations1) - (let ((s4-0 (new-stack-vector0))) - (read-pad s4-0) - (turn-to-vector s4-0 0.0) - ) - (add-thrust) - (add-gravity) - (do-rotations2) - (reverse-conversions (-> self control transv)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (build-conversions (-> self control transv)) + (do-rotations1) + (let ((s4-0 (new-stack-vector0))) + (read-pad s4-0) + (turn-to-vector s4-0 0.0) + ) + (add-thrust) + (add-gravity) + (do-rotations2) + (reverse-conversions (-> self control transv)) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) + (if (logtest? (-> self control root-prim prim-core action) 64) + (dummy-20 *target* *collide-cache*) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) + ) + ) + (bend-gravity) + (post-flag-setup) ) - ) - (dummy-33 - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) - (if (logtest? (-> self control root-prim prim-core action) 64) - (dummy-20 *target* *collide-cache*) - ) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) - ) - ) - (bend-gravity) - (post-flag-setup) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :a #x80) + ) + ) (joint-points) (do-target-shadow) (target-powerup-process) @@ -2472,43 +1773,43 @@ (defbehavior target-no-move-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (build-conversions (-> self control transv)) - (do-rotations1) - (do-rotations2) - (reverse-conversions (-> self control transv)) - (vector-! - (-> self control unknown-vector12) - (-> self control unknown-vector11) - (-> self control unknown-vector14) - ) - (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-3 options) (the-as uint 1)) - (set! (-> a1-3 tlist) *touching-list*) - (dummy-40 (-> self control) a1-3) - ) - (post-flag-setup) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (build-conversions (-> self control transv)) + (do-rotations1) + (do-rotations2) + (reverse-conversions (-> self control transv)) + (vector-! + (-> self control unknown-vector12) + (-> self control unknown-vector11) + (-> self control unknown-vector14) + ) + (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) + (set! (-> a1-3 options) (the-as uint 1)) + (set! (-> a1-3 tlist) *touching-list*) + (dummy-40 (-> self control) a1-3) + ) + (post-flag-setup) + ) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :a #x80) + ) + ) (joint-points) (do-target-shadow) (target-powerup-process) @@ -2517,86 +1818,71 @@ (defbehavior target-slide-down-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (build-conversions (-> self control transv)) - (do-rotations1) - (let - ((s4-1 - (vector-flatten! - (new-stack-vector0) - (vector-negate! - (new-stack-vector0) - (-> self control dynam gravity-normal) - ) - (-> self control local-normal) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (build-conversions (-> self control transv)) + (do-rotations1) + (let ((s4-1 (vector-flatten! + (new-stack-vector0) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal) + ) + ) + ) + (let ((s3-1 (new-stack-vector0))) + (new-stack-matrix0) + (read-pad s3-1) + (set! (-> self control unknown-surface01 slide-factor) 49152.0) + (set! (-> self control unknown-surface01 bend-factor) 0.0) + (turn-to-vector s3-1 (the-as float (/ (the int (-> self control unknown-float20)) 2))) + ) + (set! (-> self control unknown-vector20 quad) (-> (vector-negate! s4-1 s4-1) quad)) ) - ) + (set! (-> self control unknown-float12) 1.0) + (add-thrust) + (add-gravity) + (do-rotations2) + (reverse-conversions (-> self control transv)) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) + (if (logtest? (-> self control root-prim prim-core action) 64) + (dummy-20 *target* *collide-cache*) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :a #x80) + ) + ) + (bend-gravity) + (post-flag-setup) ) - (let ((s3-1 (new-stack-vector0))) - (new-stack-matrix0) - (read-pad s3-1) - (set! (-> self control unknown-surface01 slide-factor) 49152.0) - (set! (-> self control unknown-surface01 bend-factor) 0.0) - (turn-to-vector - s3-1 - (the-as float (/ (the int (-> self control unknown-float20)) 2)) - ) - ) - (set! - (-> self control unknown-vector20 quad) - (-> (vector-negate! s4-1 s4-1) quad) - ) - ) - (set! (-> self control unknown-float12) 1.0) - (add-thrust) - (add-gravity) - (do-rotations2) - (reverse-conversions (-> self control transv)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (dummy-33 - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) - (if (logtest? (-> self control root-prim prim-core action) 64) - (dummy-20 *target* *collide-cache*) - ) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :a #x80) - ) - ) - (bend-gravity) - (post-flag-setup) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :a #x80) + ) + ) (joint-points) (do-target-shadow) (target-powerup-process) @@ -2605,15 +1891,15 @@ (defbehavior target-no-ja-move-post target () (vector-! - (-> self control unknown-vector12) - (-> self control unknown-vector11) - (-> self control unknown-vector14) - ) + (-> self control unknown-vector12) + (-> self control unknown-vector11) + (-> self control unknown-vector14) + ) (let ((a1-2 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-2 options) (the-as uint 1)) - (set! (-> a1-2 tlist) *touching-list*) - (dummy-40 (-> self control) a1-2) - ) + (set! (-> a1-2 options) (the-as uint 1)) + (set! (-> a1-2 tlist) *touching-list*) + (dummy-40 (-> self control) a1-2) + ) (target-calc-camera-pos) (do-target-shadow) (target-powerup-process) @@ -2622,25 +1908,19 @@ (defbehavior reset-target-state target ((arg0 symbol)) (when arg0 - (vector-identity! (-> self control scale)) - (quaternion-identity! (-> self control quat)) - (quaternion-identity! (-> self control unknown-quaternion00)) - (quaternion-identity! (-> self control dir-targ)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! - (-> (&-> (-> self control) unknown-qword00) 0) - (-> self control trans quad) + (vector-identity! (-> self control scale)) + (quaternion-identity! (-> self control quat)) + (quaternion-identity! (-> self control unknown-quaternion00)) + (quaternion-identity! (-> self control dir-targ)) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) - ) (target-exit) (target-timed-invulnerable-off self) (set! (-> self control status) (the-as uint 0)) (set! (-> self control unknown-dynamics00) *standard-dynamics*) (set! (-> self control surf) *standard-ground-surface*) - (set! - (-> self control unknown-vector02 quad) - (-> self control unknown-dynamics00 gravity-normal quad) - ) + (set! (-> self control unknown-vector02 quad) (-> self control unknown-dynamics00 gravity-normal quad)) (quaternion-identity! (-> self control unknown-quaternion01)) (set! (-> self control unknown-float00) 0.0) (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) @@ -2659,68 +1939,63 @@ (set-setting! *setting-control* self 'allow-progress #f 0.0 0) (copy-settings-from-target! *setting-control*) (if (not arg0) - (set! arg0 (get-or-create-continue! *game-info*)) - ) + (set! arg0 (get-or-create-continue! *game-info*)) + ) (set-continue! *game-info* arg0) (stack-size-set! (-> self main-thread) 1024) (logior! (-> self mask) (process-mask target)) (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) (let ((s5-0 (new 'process 'control-info self (collide-list-enum player)))) - (set! (-> self control) s5-0) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 max-iteration-count) (the-as uint 8)) - (set! (-> s5-0 event-self) 'touched) - (set! (-> s5-0 reaction) target-collision-reaction) - (set! (-> s5-0 no-reaction) target-collision-no-reaction) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 1))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s4-0 collide-with) (the-as uint #x2bef)) - (set! (-> s4-0 prim-core offense) 1) - (set! (-> s4-0 prim-core action) (the-as uint 5)) - (set-root-prim! s5-0 s4-0) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) - (set! (-> s3-0 prim-core action) (the-as uint 5)) - (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-0 collide-with) (the-as uint #x2bef)) - (set! (-> s3-0 prim-core offense) 1) - (append-prim s4-0 s3-0) - (set! (-> s5-0 unknown-sphere-array00 0) s3-0) - ) - (let - ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 10)))) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-1 collide-with) (the-as uint #x2bef)) - (set! (-> s3-1 prim-core offense) 1) - (append-prim s4-0 s3-1) - (set! (-> s5-0 unknown-sphere-array00 1) s3-1) - ) - (let - ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 18)))) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-2 collide-with) (the-as uint #x2bef)) - (set! (-> s3-2 prim-core offense) 1) - (append-prim s4-0 s3-2) - (set! (-> s5-0 unknown-sphere-array00 2) s3-2) - ) - (let - ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 32)))) - (append-prim s4-0 s3-3) - (set! (-> s5-0 unknown-sphere00) s3-3) - ) - (let - ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 64)))) - (append-prim s4-0 s3-4) - (set! (-> s5-0 unknown-sphere01) s3-4) - ) - (let - ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 128)))) - (append-prim s4-0 s3-5) - (set! (-> s5-0 unknown-sphere02) s3-5) - ) + (set! (-> self control) s5-0) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 max-iteration-count) (the-as uint 8)) + (set! (-> s5-0 event-self) 'touched) + (set! (-> s5-0 reaction) target-collision-reaction) + (set! (-> s5-0 no-reaction) target-collision-no-reaction) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 1))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 16)) + (set! (-> s4-0 collide-with) (the-as uint #x2bef)) + (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core action) (the-as uint 5)) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) + (set! (-> s3-0 prim-core action) (the-as uint 5)) + (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) + (set! (-> s3-0 collide-with) (the-as uint #x2bef)) + (set! (-> s3-0 prim-core offense) 1) + (append-prim s4-0 s3-0) + (set! (-> s5-0 unknown-sphere-array00 0) s3-0) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 10)))) + (set! (-> s3-1 prim-core action) (the-as uint 1)) + (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) + (set! (-> s3-1 collide-with) (the-as uint #x2bef)) + (set! (-> s3-1 prim-core offense) 1) + (append-prim s4-0 s3-1) + (set! (-> s5-0 unknown-sphere-array00 1) s3-1) + ) + (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 18)))) + (set! (-> s3-2 prim-core action) (the-as uint 1)) + (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) + (set! (-> s3-2 collide-with) (the-as uint #x2bef)) + (set! (-> s3-2 prim-core offense) 1) + (append-prim s4-0 s3-2) + (set! (-> s5-0 unknown-sphere-array00 2) s3-2) + ) + (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 32)))) + (append-prim s4-0 s3-3) + (set! (-> s5-0 unknown-sphere00) s3-3) + ) + (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 64)))) + (append-prim s4-0 s3-4) + (set! (-> s5-0 unknown-sphere01) s3-4) + ) + (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 128)))) + (append-prim s4-0 s3-5) + (set! (-> s5-0 unknown-sphere02) s3-5) + ) + ) ) - ) (target-collide-set! 'normal 0.0) (backup-collide-with-as (-> self control)) (set! (-> self game) *game-info*) @@ -2735,85 +2010,46 @@ (set! (-> self draw origin-joint-index) (the-as uint 33)) (set! (-> self draw shadow-joint-index) (the-as uint 33)) (let ((v1-79 (-> self node-list data))) - (set! (-> v1-79 0 param0) cspace<-transformq+trans!) - (set! (-> v1-79 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-79 0 param2) (the-as basic (-> self control unknown-vector12))) - ) + (set! (-> v1-79 0 param0) cspace<-transformq+trans!) + (set! (-> v1-79 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-79 0 param2) (the-as basic (-> self control unknown-vector12))) + ) (set! (-> self draw lod-set max-lod) 0) (logior! (-> self skel status) 257) (set! (-> self draw shadow-ctrl) *target-shadow-control*) (set! (-> self control unknown-cspace00 parent) (-> self node-list data 42)) - (set! - (-> self control unknown-cspace00 joint) - (the-as joint (-> self node-list data 54)) - ) - (set! - (-> self control unknown-cspace00 joint) - (the-as joint (-> self node-list data 54)) - ) + (set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54))) + (set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54))) (set! (-> self control unknown-cspace10 parent) (-> self node-list data 64)) - (set! - (-> self neck) - (new 'process 'joint-mod (joint-mod-handler-mode look-at) self 7) - ) - (set! - (-> self fact-info-target) - (new - 'process - 'fact-info-target - self - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) - (set! - (-> self sound) - (new 'process 'ambient-sound 'none (-> self control trans)) - ) + (set! (-> self neck) (new 'process 'joint-mod (joint-mod-handler-mode look-at) self 7)) + (set! (-> self fact-info-target) + (new 'process 'fact-info-target self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) + (set! (-> self sound) (new 'process 'ambient-sound 'none (-> self control trans))) (set! (-> self control unknown-soundid00) (new-sound-id)) (if *debug-segment* - (add-connection *debug-engine* self target-print-stats self *stdcon0* #f) - ) + (add-connection *debug-engine* self target-print-stats self *stdcon0* #f) + ) (activate-hud self) (set! (-> self fp-hud) (the-as handle #f)) (set! (-> self water) (new 'process 'water-control self 9 0.0 8192.0 2048.0)) (set! (-> self water flags) (the-as uint #x4000f0)) (reset-target-state #t) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - (set! - (-> self control unknown-vector52 y) - (+ -819200.0 (-> self control unknown-vector52 y)) - ) + (set! (-> self control unknown-vector52 y) (+ -819200.0 (-> self control unknown-vector52 y))) (set! (-> self align) (new 'process 'align-control self)) (let ((s5-1 (get-process *16k-dead-pool* sidekick #x4000))) - (set! (-> self sidekick) (the-as (pointer sidekick) (when s5-1 - (let - ((t9-37 - (method-of-type - sidekick - activate - ) - ) - ) - (t9-37 - (the-as sidekick s5-1) - self - 'sidekick - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - s5-1 - init-sidekick - ) - (-> s5-1 ppointer) - ) - ) + (set! (-> self sidekick) + (the-as (pointer sidekick) (when s5-1 + (let ((t9-37 (method-of-type sidekick activate))) + (t9-37 (the-as sidekick s5-1) self 'sidekick (the-as pointer #x70004000)) + ) + (run-now-in-process s5-1 init-sidekick) + (-> s5-1 ppointer) + ) + ) + ) ) - ) (set! (-> self manipy) (the-as (pointer manipy) #f)) (set! (-> self event-hook) target-generic-event-handler) (set! (-> self current-level) #f) @@ -2830,9 +2066,9 @@ (defun stop ((arg0 symbol)) (when *target* - (kill-by-name 'target *active-pool*) - (set! *target* #f) - ) + (kill-by-name 'target *active-pool*) + (set! *target* #f) + ) (set! (-> *game-info* mode) arg0) 0 ) @@ -2847,24 +2083,19 @@ (stop arg0) (let* ((s5-0 (get-process *target-dead-pool* target #x4000)) (v1-3 (when s5-0 - (let ((t9-2 (method-of-type target activate))) - (t9-2 - (the-as target s5-0) - *target-pool* - 'target - (&-> *dram-stack* 14336) - ) + (let ((t9-2 (method-of-type target activate))) + (t9-2 (the-as target s5-0) *target-pool* 'target (&-> *dram-stack* 14336)) + ) + (run-now-in-process s5-0 init-target arg1) + (-> s5-0 ppointer) ) - (run-now-in-process s5-0 init-target arg1) - (-> s5-0 ppointer) - ) - ) + ) ) - (if v1-3 - (set! *target* (the-as target (-> v1-3 0 self))) - (set! *target* #f) + (if v1-3 + (set! *target* (the-as target (-> v1-3 0 self))) + (set! *target* #f) + ) ) - ) *target* ) diff --git a/goal_src/engine/target/target-h.gc b/goal_src/engine/target/target-h.gc index 5e069942bf..d7f45c581e 100644 --- a/goal_src/engine/target/target-h.gc +++ b/goal_src/engine/target/target-h.gc @@ -102,6 +102,9 @@ target-racing-grab (target-racing-hit handle attack-info) (target-racing-jump float float symbol) + target-title + target-demo + target-warp-in ) ) diff --git a/goal_src/engine/target/target-util.gc b/goal_src/engine/target/target-util.gc index 3b6680dd2b..dba99801e2 100644 --- a/goal_src/engine/target/target-util.gc +++ b/goal_src/engine/target/target-util.gc @@ -25,17 +25,15 @@ (define *target-shadow-control* - (new 'static 'shadow-control - :settings - (new 'static 'shadow-settings - :center - (new 'static 'vector :w (the-as float #x2)) - :shadow-dir - (new 'static 'vector :x -0.4226 :y -0.9063 :w 409600.0) - :bot-plane (new 'static 'plane :y 1.0 :w 37683.2) - :top-plane (new 'static 'plane :y 1.0 :w 4096.0) - ) - ) + (new 'static 'shadow-control :settings (new 'static 'shadow-settings + :center + (new 'static 'vector :w (the-as float #x2)) + :shadow-dir + (new 'static 'vector :x -0.4226 :y -0.9063 :w 409600.0) + :bot-plane (new 'static 'plane :y 1.0 :w 37683.2) + :top-plane (new 'static 'plane :y 1.0 :w 4096.0) + ) + ) ) (deftype target-bank (basic) @@ -128,92 +126,90 @@ ) -(define - *TARGET-bank* - (new 'static 'target-bank - :jump-collide-offset (meters 0.7) - :jump-height-min (meters 1.01) - :jump-height-max (meters 3.5) - :double-jump-height-min (meters 1.0) - :double-jump-height-max (meters 2.5) - :flip-jump-height-min (meters 5.0) - :flip-jump-height-max (meters 7.0) - :duck-jump-height-min (meters 5.0) - :duck-jump-height-max (meters 7.0) - :flop-jump-height-min (meters 5.0) - :flop-jump-height-max (meters 7.0) - :attack-jump-height-min (meters 4.0) - :attack-jump-height-max (meters 5.5) - :edge-grab-jump-height-min (meters 1.7) - :edge-grab-jump-height-max (meters 1.7) - :swim-jump-height-min (meters 5.0) - :swim-jump-height-max (meters 5.0) - :tube-jump-height-min (meters 1.75) - :tube-jump-height-max (meters 2.5) - :wheel-duration (seconds 0.5) - :wheel-jump-pre-window (seconds 1) - :wheel-jump-post-window (seconds 0.1) - :wheel-speed-min (meters 11.5) - :wheel-speed-inc (meters 1.5) - :wheel-flip-duration (seconds 0.7) - :wheel-flip-height (meters 3.52) - :wheel-flip-dist (meters 17.3) - :wheel-flip-art-height (meters 3.2969) - :wheel-flip-art-dist (meters 12.5) - :duck-slide-distance (meters 5.75) - :fall-far (meters 30.0) - :fall-far-inc (meters 20.0) - :attack-timeout (seconds 0.3) - :ground-timeout (seconds 0.2) - :slide-down-timeout (seconds 0.2) - :fall-timeout (seconds 1) - :fall-stumble-threshold (meters 39.9) - :yellow-projectile-speed (meters 60.0) - :hit-invulnerable-timeout (seconds 3) - :run-cycle-length 60.0 - :walk-cycle-dist (meters 2.8) - :walk-up-cycle-dist (meters 2.8) - :walk-down-cycle-dist (meters 2.8) - :walk-side-cycle-dist (meters 2.8) - :run-cycle-dist (meters 6.25) - :run-up-cycle-dist (meters 5.0) - :run-down-cycle-dist (meters 5.0) - :run-side-cycle-dist (meters 6.25) - :run-wall-cycle-dist (meters 2.8) - :duck-walk-cycle-dist (meters 3.25) - :wade-shallow-walk-cycle-dist (meters 6.0) - :wade-deep-walk-cycle-dist (meters 6.0) - :smack-surface-dist (meters 1.25) - :min-dive-depth (meters 2.0) - :root-radius (meters 2.2) - :root-offset (new 'static 'vector :y 4915.2 :w 1.0) - :body-radius (meters 0.7) - :edge-radius (meters 0.35) - :edge-offset - (new 'static 'vector :y 4915.2 :z 4096.0 :w 1.0) - :head-radius (meters 0.7) - :head-height (meters 1.4) - :head-offset (new 'static 'vector :y 4915.2 :w 1.0) - :spin-radius (meters 2.2) - :spin-offset (new 'static 'vector :y 6553.6 :w 1.0) - :duck-spin-radius (meters 1.2) - :duck-spin-offset (new 'static 'vector :y 4096.0 :w 1.0) - :punch-radius (meters 1.3) - :punch-offset (new 'static 'vector :y 5324.8 :w 1.0) - :uppercut-radius (meters 1.0) - :uppercut0-offset (new 'static 'vector :y 3276.8 :w 1.0) - :uppercut1-offset (new 'static 'vector :y 9011.2 :w 1.0) - :flop-radius (meters 1.4) - :flop0-offset (new 'static 'vector :y 3276.8 :w 1.0) - :flop1-offset (new 'static 'vector :y 9011.2 :w 1.0) - :stuck-time (seconds 0.3) - :stuck-timeout (seconds 2) - :stuck-distance (meters 0.05) - :tongue-pull-speed-min 0.15 - :tongue-pull-speed-max 0.22 - :yellow-attack-timeout (seconds 0.2) - ) - ) +(define *TARGET-bank* (new 'static 'target-bank + :jump-collide-offset (meters 0.7) + :jump-height-min (meters 1.01) + :jump-height-max (meters 3.5) + :double-jump-height-min (meters 1.0) + :double-jump-height-max (meters 2.5) + :flip-jump-height-min (meters 5.0) + :flip-jump-height-max (meters 7.0) + :duck-jump-height-min (meters 5.0) + :duck-jump-height-max (meters 7.0) + :flop-jump-height-min (meters 5.0) + :flop-jump-height-max (meters 7.0) + :attack-jump-height-min (meters 4.0) + :attack-jump-height-max (meters 5.5) + :edge-grab-jump-height-min (meters 1.7) + :edge-grab-jump-height-max (meters 1.7) + :swim-jump-height-min (meters 5.0) + :swim-jump-height-max (meters 5.0) + :tube-jump-height-min (meters 1.75) + :tube-jump-height-max (meters 2.5) + :wheel-duration (seconds 0.5) + :wheel-jump-pre-window (seconds 1) + :wheel-jump-post-window (seconds 0.1) + :wheel-speed-min (meters 11.5) + :wheel-speed-inc (meters 1.5) + :wheel-flip-duration (seconds 0.7) + :wheel-flip-height (meters 3.52) + :wheel-flip-dist (meters 17.3) + :wheel-flip-art-height (meters 3.2969) + :wheel-flip-art-dist (meters 12.5) + :duck-slide-distance (meters 5.75) + :fall-far (meters 30.0) + :fall-far-inc (meters 20.0) + :attack-timeout (seconds 0.3) + :ground-timeout (seconds 0.2) + :slide-down-timeout (seconds 0.2) + :fall-timeout (seconds 1) + :fall-stumble-threshold (meters 39.9) + :yellow-projectile-speed (meters 60.0) + :hit-invulnerable-timeout (seconds 3) + :run-cycle-length 60.0 + :walk-cycle-dist (meters 2.8) + :walk-up-cycle-dist (meters 2.8) + :walk-down-cycle-dist (meters 2.8) + :walk-side-cycle-dist (meters 2.8) + :run-cycle-dist (meters 6.25) + :run-up-cycle-dist (meters 5.0) + :run-down-cycle-dist (meters 5.0) + :run-side-cycle-dist (meters 6.25) + :run-wall-cycle-dist (meters 2.8) + :duck-walk-cycle-dist (meters 3.25) + :wade-shallow-walk-cycle-dist (meters 6.0) + :wade-deep-walk-cycle-dist (meters 6.0) + :smack-surface-dist (meters 1.25) + :min-dive-depth (meters 2.0) + :root-radius (meters 2.2) + :root-offset (new 'static 'vector :y 4915.2 :w 1.0) + :body-radius (meters 0.7) + :edge-radius (meters 0.35) + :edge-offset + (new 'static 'vector :y 4915.2 :z 4096.0 :w 1.0) + :head-radius (meters 0.7) + :head-height (meters 1.4) + :head-offset (new 'static 'vector :y 4915.2 :w 1.0) + :spin-radius (meters 2.2) + :spin-offset (new 'static 'vector :y 6553.6 :w 1.0) + :duck-spin-radius (meters 1.2) + :duck-spin-offset (new 'static 'vector :y 4096.0 :w 1.0) + :punch-radius (meters 1.3) + :punch-offset (new 'static 'vector :y 5324.8 :w 1.0) + :uppercut-radius (meters 1.0) + :uppercut0-offset (new 'static 'vector :y 3276.8 :w 1.0) + :uppercut1-offset (new 'static 'vector :y 9011.2 :w 1.0) + :flop-radius (meters 1.4) + :flop0-offset (new 'static 'vector :y 3276.8 :w 1.0) + :flop1-offset (new 'static 'vector :y 9011.2 :w 1.0) + :stuck-time (seconds 0.3) + :stuck-timeout (seconds 2) + :stuck-distance (meters 0.05) + :tongue-pull-speed-min 0.15 + :tongue-pull-speed-max 0.22 + :yellow-attack-timeout (seconds 0.2) + ) + ) (defbehavior target-start-attack target () (+! (-> self control unknown-dword50) 1) @@ -227,475 +223,391 @@ (s5-0 (-> self control unknown-sphere01)) (gp-0 (-> self control unknown-sphere02)) (f30-0 (if arg1 - 2.0 - 1.0 - ) - ) + 2.0 + 1.0 + ) + ) ) - (dotimes (v1-4 3) - (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) 2) - ) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (-> *TARGET-bank* root-offset) - (-> *TARGET-bank* root-radius) - ) - (set! (-> self control unknown-symbol30) arg0) - (set! (-> self state-flags) (logand -3 (-> self state-flags))) - (set! (-> s4-0 transform-index) -2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s4-0 collide-with) (the-as uint 0)) - (set! (-> s4-0 local-sphere w) 0.0) - (set! (-> s4-0 prim-core offense) 0) - (set! (-> s5-0 transform-index) -2) - (set! (-> s5-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s5-0 collide-with) (the-as uint 0)) - (set! (-> s5-0 local-sphere w) 0.0) - (set! (-> s5-0 prim-core offense) 0) - (set! (-> gp-0 transform-index) -2) - (set! (-> gp-0 prim-core collide-as) (the-as uint 0)) - (set! (-> gp-0 collide-with) (the-as uint 0)) - (set! (-> gp-0 local-sphere w) 0.0) - (set! (-> gp-0 prim-core offense) 0) - (case arg0 - (('harmless #f) - (set! (-> self control unknown-symbol30) #f) - (target-collide-set! - (-> self control unknown-symbol00) - (-> self control unknown-float90) + (dotimes (v1-4 3) + (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) 2) + ) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (-> *TARGET-bank* root-offset) + (-> *TARGET-bank* root-radius) + ) + (set! (-> self control unknown-symbol30) arg0) + (set! (-> self state-flags) (logand -3 (-> self state-flags))) + (set! (-> s4-0 transform-index) -2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 0)) + (set! (-> s4-0 collide-with) (the-as uint 0)) + (set! (-> s4-0 local-sphere w) 0.0) + (set! (-> s4-0 prim-core offense) 0) + (set! (-> s5-0 transform-index) -2) + (set! (-> s5-0 prim-core collide-as) (the-as uint 0)) + (set! (-> s5-0 collide-with) (the-as uint 0)) + (set! (-> s5-0 local-sphere w) 0.0) + (set! (-> s5-0 prim-core offense) 0) + (set! (-> gp-0 transform-index) -2) + (set! (-> gp-0 prim-core collide-as) (the-as uint 0)) + (set! (-> gp-0 collide-with) (the-as uint 0)) + (set! (-> gp-0 local-sphere w) 0.0) + (set! (-> gp-0 prim-core offense) 0) + (case arg0 + (('harmless #f) + (set! (-> self control unknown-symbol30) #f) + (target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90)) ) + (('spin 'spin-air) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (new 'static 'vector :y 6553.6 :w 1.0) + 9830.4 + ) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* spin-offset) + (-> *TARGET-bank* spin-radius) + ) + ) + (('duck-spin) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (new 'static 'vector :y 6553.6 :w 1.0) + 10649.6 + ) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (-> *TARGET-bank* duck-spin-radius) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) + (set! (-> s5-0 transform-index) 32) + ) + (('duck-slide) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (-> *TARGET-bank* duck-spin-radius) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) + (set! (-> s5-0 transform-index) 28) + ) + (('wheel-solid) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (dotimes (v1-57 3) + (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) 1) + ) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) + (set! (-> s5-0 transform-index) 7) + (set! (-> self control unknown-symbol30) 'roll) + ) + (('flip) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (dotimes (v1-71 3) + (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) 1) + ) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) + (set! (-> s5-0 transform-index) 7) + (set! (-> self control unknown-symbol30) 'flip) + ) + (('punch) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (new 'static 'vector :y 6553.6 :w 1.0) + 11878.4 + ) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* punch-offset) + (-> *TARGET-bank* punch-radius) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* punch-radius)) + (set! (-> s5-0 transform-index) 22) + ) + (('uppercut) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (new 'static 'vector :y 6553.6 :w 1.0) + 11878.4 + ) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* uppercut0-offset) + (-> *TARGET-bank* uppercut-radius) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* uppercut-radius)) + (set! (-> s5-0 transform-index) 22) + (set! (-> gp-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> gp-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> gp-0 local-sphere)) + (-> *TARGET-bank* uppercut1-offset) + (-> *TARGET-bank* uppercut-radius) + ) + ) + (('flop) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (dotimes (v1-114 3) + (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) 3) + ) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* flop0-offset) + (-> *TARGET-bank* flop-radius) + ) + (set! f30-0 1.0) + (set! (-> self control unknown-symbol30) 'flop) + ) + (('flop-down) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (dotimes (v1-124 3) + (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) 3) + ) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* flop0-offset) + (-> *TARGET-bank* flop-radius) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s5-0 local-sphere)) + (-> *TARGET-bank* flop1-offset) + (-> *TARGET-bank* flop-radius) + ) + (if (!= f30-0 1.0) + (set! f30-0 2.1) + ) + (set! (-> self control unknown-symbol30) 'flop) + ) + (('flut-attack) + (sphere<-vector+r! + (the-as sphere (-> self control root-prim local-sphere)) + (new 'static 'vector :y 6553.6 :w 1.0) + 12288.0 + ) + (logior! (-> self state-flags) 2) + (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* spin-offset) + (+ 2048.0 (-> *TARGET-bank* punch-radius)) + ) + (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) + (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (sphere<-vector+r! + (the-as sphere (-> s5-0 local-sphere)) + *null-vector* + (+ 1228.8 (-> *TARGET-bank* punch-radius)) + ) + (set! (-> s5-0 transform-index) 37) + (dotimes (v1-148 3) + (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) 3) + ) + ) + (else + (format 0 "ERROR: ~A unknown danger mode ~A" self arg0) + ) ) - (('spin 'spin-air) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (new 'static 'vector :y 6553.6 :w 1.0) - 9830.4 + (when (and (!= f30-0 1.0) (not (or (= arg0 'harmless) (= arg0 #f)))) + (set! (-> self control root-prim local-sphere w) (* (-> self control root-prim local-sphere w) f30-0)) + (set! (-> s4-0 local-sphere w) (* (-> s4-0 local-sphere w) f30-0)) + (set! (-> s5-0 local-sphere w) (* (-> s5-0 local-sphere w) f30-0)) + (let ((f0-37 (* (-> gp-0 local-sphere w) f30-0))) + (set! (-> gp-0 local-sphere w) f0-37) + f0-37 + ) ) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* spin-offset) - (-> *TARGET-bank* spin-radius) - ) - ) - (('duck-spin) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (new 'static 'vector :y 6553.6 :w 1.0) - 10649.6 - ) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 transform-index) 32) - ) - (('duck-slide) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 transform-index) 28) - ) - (('wheel-solid) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (dotimes (v1-57 3) - (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) 1) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 transform-index) 7) - (set! (-> self control unknown-symbol30) 'roll) - ) - (('flip) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (dotimes (v1-71 3) - (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) 1) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* duck-spin-radius) - ) - (set! (-> s5-0 transform-index) 7) - (set! (-> self control unknown-symbol30) 'flip) - ) - (('punch) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (new 'static 'vector :y 6553.6 :w 1.0) - 11878.4 - ) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* punch-offset) - (-> *TARGET-bank* punch-radius) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* punch-radius) - ) - (set! (-> s5-0 transform-index) 22) - ) - (('uppercut) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (new 'static 'vector :y 6553.6 :w 1.0) - 11878.4 - ) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* uppercut0-offset) - (-> *TARGET-bank* uppercut-radius) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (-> *TARGET-bank* uppercut-radius) - ) - (set! (-> s5-0 transform-index) 22) - (set! (-> gp-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> gp-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> gp-0 local-sphere)) - (-> *TARGET-bank* uppercut1-offset) - (-> *TARGET-bank* uppercut-radius) - ) - ) - (('flop) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (dotimes (v1-114 3) - (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) 3) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* flop0-offset) - (-> *TARGET-bank* flop-radius) - ) - (set! f30-0 1.0) - (set! (-> self control unknown-symbol30) 'flop) - ) - (('flop-down) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (dotimes (v1-124 3) - (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) 3) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* flop0-offset) - (-> *TARGET-bank* flop-radius) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - (-> *TARGET-bank* flop1-offset) - (-> *TARGET-bank* flop-radius) - ) - (if (!= f30-0 1.0) - (set! f30-0 2.1) - ) - (set! (-> self control unknown-symbol30) 'flop) - ) - (('flut-attack) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (new 'static 'vector :y 6553.6 :w 1.0) - 12288.0 - ) - (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* spin-offset) - (+ 2048.0 (-> *TARGET-bank* punch-radius)) - ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (+ 1228.8 (-> *TARGET-bank* punch-radius)) - ) - (set! (-> s5-0 transform-index) 37) - (dotimes (v1-148 3) - (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) 3) - ) - ) - (else - (format 0 "ERROR: ~A unknown danger mode ~A" self arg0) - ) ) - (when (and (!= f30-0 1.0) (not (or (= arg0 'harmless) (= arg0 #f)))) - (set! - (-> self control root-prim local-sphere w) - (* (-> self control root-prim local-sphere w) f30-0) - ) - (set! (-> s4-0 local-sphere w) (* (-> s4-0 local-sphere w) f30-0)) - (set! (-> s5-0 local-sphere w) (* (-> s5-0 local-sphere w) f30-0)) - (let ((f0-37 (* (-> gp-0 local-sphere w) f30-0))) - (set! (-> gp-0 local-sphere w) f0-37) - f0-37 - ) - ) - ) ) (defbehavior target-collide-set! target ((arg0 symbol) (arg1 float)) (let ((gp-0 (-> self control))) - (set! (-> self control unknown-symbol00) arg0) - (set! (-> self control unknown-float90) arg1) - (dotimes (v1-2 3) - (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) 1) - (set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2) + (set! (-> self control unknown-symbol00) arg0) + (set! (-> self control unknown-float90) arg1) + (dotimes (v1-2 3) + (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) 1) + (set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2) + ) + (case arg0 + (('pole) + (set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius)) + (set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius)) + (set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius)) + (set! (-> gp-0 unknown-sphere-array00 0 transform-index) 28) + (set! (-> gp-0 unknown-sphere-array00 1 transform-index) 26) + (set! (-> gp-0 unknown-sphere-array00 2 transform-index) 7) + ) + (('racer) + (set! (-> gp-0 unknown-vector11 y) 4096.0) + (sphere<-vector+r! + (the-as sphere (-> gp-0 root-prim local-sphere)) + (new 'static 'vector :y 8192.0 :w 1.0) + 16384.0 + ) + (set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 6553.6 0.0 6553.6) + (set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 9420.8 0.0 6553.6) + (set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 12288.0 0.0 6553.6) + (dotimes (v1-22 3) + (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) 3) + ) + ) + (('flut) + (sphere<-vector+r! + (the-as sphere (-> gp-0 root-prim local-sphere)) + (new 'static 'vector :y 8192.0 :w 1.0) + 12288.0 + ) + (set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 4915.2 0.0 4915.2) + (set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 7782.4004 0.0 4915.2) + (set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 10649.6 0.0 4915.2) + ) + (('duck) + (set! (-> self control unknown-float91) arg1) + (let ((f30-0 (- 1.0 arg1))) + (set! (-> gp-0 unknown-vector11 y) 0.0) + (sphere<-vector+r! + (the-as sphere (-> gp-0 root-prim local-sphere)) + (-> *TARGET-bank* root-offset) + (-> *TARGET-bank* root-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 0 local-sphere) + 0.0 + (-> *TARGET-bank* body-radius) + (* 0.0 f30-0) + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 1 local-sphere) + 0.0 + (+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-0)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 2 local-sphere) + 0.0 + (+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-0)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + ) + ) + (('tube) + (set! (-> self control unknown-float91) arg1) + (let ((f30-1 (- 1.0 arg1))) + (set! (-> gp-0 unknown-vector11 y) 0.0) + (sphere<-vector+r! + (the-as sphere (-> gp-0 root-prim local-sphere)) + (-> *TARGET-bank* root-offset) + (-> *TARGET-bank* root-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 0 local-sphere) + 0.0 + (-> *TARGET-bank* body-radius) + (* 0.0 f30-1) + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 1 local-sphere) + 0.0 + (+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-1)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 2 local-sphere) + 0.0 + (+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-1)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + ) + (dotimes (v1-52 3) + (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) 3) + ) + ) + (else + (set! (-> self control unknown-float91) 0.0) + (set! (-> gp-0 unknown-vector11 y) 0.0) + (sphere<-vector+r! + (the-as sphere (-> gp-0 root-prim local-sphere)) + (-> *TARGET-bank* root-offset) + (-> *TARGET-bank* root-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 0 local-sphere) + 0.0 + (-> *TARGET-bank* body-radius) + 0.0 + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 1 local-sphere) + 0.0 + (+ 2867.2 (-> *TARGET-bank* body-radius)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + (set-vector! + (-> gp-0 unknown-sphere-array00 2 local-sphere) + 0.0 + (+ 5734.4 (-> *TARGET-bank* body-radius)) + 0.0 + (-> *TARGET-bank* body-radius) + ) + ) + ) ) - (case arg0 - (('pole) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - 0.0 - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - 0.0 - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - 0.0 - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set! (-> gp-0 unknown-sphere-array00 0 transform-index) 28) - (set! (-> gp-0 unknown-sphere-array00 1 transform-index) 26) - (set! (-> gp-0 unknown-sphere-array00 2 transform-index) 7) - ) - (('racer) - (set! (-> gp-0 unknown-vector11 y) 4096.0) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (new 'static 'vector :y 8192.0 :w 1.0) - 16384.0 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - 6553.6 - 0.0 - 6553.6 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - 9420.8 - 0.0 - 6553.6 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - 12288.0 - 0.0 - 6553.6 - ) - (dotimes (v1-22 3) - (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) 3) - ) - ) - (('flut) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (new 'static 'vector :y 8192.0 :w 1.0) - 12288.0 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - 4915.2 - 0.0 - 4915.2 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - 7782.4004 - 0.0 - 4915.2 - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - 10649.6 - 0.0 - 4915.2 - ) - ) - (('duck) - (set! (-> self control unknown-float91) arg1) - (let ((f30-0 (- 1.0 arg1))) - (set! (-> gp-0 unknown-vector11 y) 0.0) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (-> *TARGET-bank* root-offset) - (-> *TARGET-bank* root-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - (-> *TARGET-bank* body-radius) - (* 0.0 f30-0) - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - (+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-0)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - (+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-0)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - ) - ) - (('tube) - (set! (-> self control unknown-float91) arg1) - (let ((f30-1 (- 1.0 arg1))) - (set! (-> gp-0 unknown-vector11 y) 0.0) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (-> *TARGET-bank* root-offset) - (-> *TARGET-bank* root-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - (-> *TARGET-bank* body-radius) - (* 0.0 f30-1) - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - (+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-1)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - (+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-1)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - ) - (dotimes (v1-52 3) - (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) 3) - ) - ) - (else - (set! (-> self control unknown-float91) 0.0) - (set! (-> gp-0 unknown-vector11 y) 0.0) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (-> *TARGET-bank* root-offset) - (-> *TARGET-bank* root-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 0 local-sphere) - 0.0 - (-> *TARGET-bank* body-radius) - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 1 local-sphere) - 0.0 - (+ 2867.2 (-> *TARGET-bank* body-radius)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - (set-vector! - (-> gp-0 unknown-sphere-array00 2 local-sphere) - 0.0 - (+ 5734.4 (-> *TARGET-bank* body-radius)) - 0.0 - (-> *TARGET-bank* body-radius) - ) - ) - ) - ) 0 ) @@ -705,165 +617,121 @@ (defbehavior target-align-vel-z-adjust target ((arg0 float)) (let ((f1-0 (-> self control unknown-float61))) - (* arg0 (if (< 0.0 f1-0) - (* (- 1.0 f1-0) (-> self control unknown-surface01 alignv)) - (-> self control unknown-surface01 alignv) - ) + (* arg0 (if (< 0.0 f1-0) + (* (- 1.0 f1-0) (-> self control unknown-surface01 alignv)) + (-> self control unknown-surface01 alignv) + ) + ) ) - ) ) -(defmethod - dummy-16 - target - ((obj target) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(defmethod dummy-16 target ((obj target) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) (let ((s2-0 (new 'stack-no-clear 'vector))) - (set! (-> s2-0 quad) (-> arg2 quad)) - (set! (-> s2-0 z) (target-align-vel-z-adjust (-> s2-0 z))) - (when (logtest? arg0 7) - (let* ((s3-0 (-> obj control unknown-matrix01)) - (s0-0 (-> obj control unknown-matrix00)) - (s1-0 - (vector-matrix*! - (new 'stack-no-clear 'vector) - (-> obj control dynam gravity) - s0-0 + (set! (-> s2-0 quad) (-> arg2 quad)) + (set! (-> s2-0 z) (target-align-vel-z-adjust (-> s2-0 z))) + (when (logtest? arg0 7) + (let* ((s3-0 (-> obj control unknown-matrix01)) + (s0-0 (-> obj control unknown-matrix00)) + (s1-0 (vector-matrix*! (new 'stack-no-clear 'vector) (-> obj control dynam gravity) s0-0)) + (a1-3 (vector-matrix*! (new 'stack-no-clear 'vector) (-> obj control transv) s0-0)) ) + (if (logtest? arg0 2048) + (set-vector! s1-0 0.0 0.0 0.0 1.0) ) - (a1-3 - (vector-matrix*! - (new 'stack-no-clear 'vector) - (-> obj control transv) - s0-0 - ) + (when (logtest? arg0 1) + (set! (-> a1-3 x) (+ (* (-> arg1 0 x) (-> s2-0 x) (-> *display* frames-per-second)) + (* (-> s1-0 x) (-> *display* seconds-per-frame)) + ) + ) + (if (zero? (logand arg0 12)) + (set! (-> a1-3 z) 0.0) + ) + ) + (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0)))) + (set! (-> a1-3 y) (+ (* (-> arg1 0 y) (-> s2-0 y) (-> *display* frames-per-second)) + (* (-> s1-0 y) (-> *display* seconds-per-frame)) + ) + ) ) - ) - (if (logtest? arg0 2048) - (set-vector! s1-0 0.0 0.0 0.0 1.0) - ) - (when (logtest? arg0 1) - (set! - (-> a1-3 x) - (+ - (* (-> arg1 0 x) (-> s2-0 x) (-> *display* frames-per-second)) - (* (-> s1-0 x) (-> *display* seconds-per-frame)) + (when (logtest? arg0 4) + (set! (-> a1-3 z) (+ (* (-> arg1 0 z) (-> s2-0 z) (-> *display* frames-per-second)) + (* (-> s1-0 z) (-> *display* seconds-per-frame)) + ) + ) + (if (zero? (logand arg0 9)) + (set! (-> a1-3 x) 0.0) + ) + ) + (vector-matrix*! (-> obj control transv) a1-3 s3-0) ) - ) - (if (zero? (logand arg0 12)) - (set! (-> a1-3 z) 0.0) - ) ) - (if - (and - (logtest? arg0 2) - (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0))) - ) - (set! - (-> a1-3 y) - (+ - (* (-> arg1 0 y) (-> s2-0 y) (-> *display* frames-per-second)) - (* (-> s1-0 y) (-> *display* seconds-per-frame)) - ) - ) - ) - (when (logtest? arg0 4) - (set! - (-> a1-3 z) - (+ - (* (-> arg1 0 z) (-> s2-0 z) (-> *display* frames-per-second)) - (* (-> s1-0 z) (-> *display* seconds-per-frame)) - ) - ) - (if (zero? (logand arg0 9)) - (set! (-> a1-3 x) 0.0) - ) - ) - (vector-matrix*! (-> obj control transv) a1-3 s3-0) - ) ) - ) (if (logtest? arg0 16) - (quaternion-normalize! - (quaternion*! - (-> obj control unknown-quaternion00) - (-> obj control unknown-quaternion00) - (the-as quaternion (-> arg1 1)) - ) - ) - ) + (quaternion-normalize! (quaternion*! + (-> obj control unknown-quaternion00) + (-> obj control unknown-quaternion00) + (the-as quaternion (-> arg1 1)) + ) + ) + ) (the-as collide-shape (-> obj control)) ) (defun average-turn-angle ((arg0 target)) (let ((f30-0 0.0)) - (dotimes (s5-0 8) - (+! - f30-0 - (fabs - (deg-diff - (atan - (-> arg0 control unknown-vector-array00 s5-0 x) - (-> arg0 control unknown-vector-array00 s5-0 z) + (dotimes (s5-0 8) + (+! + f30-0 + (fabs + (deg-diff + (atan (-> arg0 control unknown-vector-array00 s5-0 x) (-> arg0 control unknown-vector-array00 s5-0 z)) + 0.0 + ) + ) ) - 0.0 - ) ) - ) + (* 0.125 f30-0) ) - (* 0.125 f30-0) - ) ) (defbehavior can-play-stance-amibent? target () (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) - (not (-> *setting-control* current talking)) - (not (-> *setting-control* current spooling)) - (not (-> *setting-control* current movie)) - (not (-> *setting-control* current hint)) - (zero? (logand (-> self control status) 32)) - (zero? (logand (-> self water flags) 512)) - ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) + (not (-> *setting-control* current talking)) + (not (-> *setting-control* current spooling)) + (not (-> *setting-control* current movie)) + (not (-> *setting-control* current hint)) + (zero? (logand (-> self control status) 32)) + (zero? (logand (-> self water flags) 512)) + ) ) (defbehavior can-jump? target ((arg0 symbol)) (and - (or - (logtest? (-> self control status) 1) - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (and - (logtest? (-> self control status) 1) - (< 0.866 (-> self control surface-angle)) - ) - ) - (and - (zero? (logand (-> self control unknown-surface01 flags) 64)) - (zero? (logand (-> self state-flags) 2048)) - (case arg0 - (('target-wheel-flip) - (>= 0.5 (-> self control unknown-float61)) - ) - (else - #t + (or + (logtest? (-> self control status) 1) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (and (logtest? (-> self control status) 1) (< 0.866 (-> self control surface-angle))) + ) + (and + (zero? (logand (-> self control unknown-surface01 flags) 64)) + (zero? (logand (-> self state-flags) 2048)) + (case arg0 + (('target-wheel-flip) + (>= 0.5 (-> self control unknown-float61)) + ) + (else + #t + ) + ) ) - ) ) - ) ) (defbehavior move-legs? target () - (!= - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - stick0-speed - ) - 0.0 - ) + (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) ) (defbehavior target-height-above-ground target () @@ -871,314 +739,236 @@ ) (defbehavior fall-test target () - (when - (and - (zero? (logand (-> self control status) 1)) - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (>= - 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) - ) - (let ((v1-15 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) + (when (and + (zero? (logand (-> self control status) 1)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-15 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or + (not (or + (= v1-15 (-> self draw art-group data 59)) + (= v1-15 (-> self draw art-group data 60)) + (= v1-15 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) + ) + ) ) - (or - (not - (or - (= v1-15 (-> self draw art-group data 59)) - (= v1-15 (-> self draw art-group data 60)) - (= v1-15 (-> self draw art-group data 61)) - ) - ) - (< 4096.0 (target-height-above-ground)) + (when (and + (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (logtest? (-> self control unknown-surface01 flags) #x4000) + ) + (+! (-> self control transv x) (-> self control rider-last-move x)) + (+! (-> self control transv z) (-> self control rider-last-move z)) ) - ) + (go target-falling #f) ) - (when - (and - (< - (- - (-> *display* base-frame-counter) - (the-as int (-> self control rider-time)) - ) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (logtest? (-> self control unknown-surface01 flags) #x4000) - ) - (+! (-> self control transv x) (-> self control rider-last-move x)) - (+! (-> self control transv z) (-> self control rider-last-move z)) - ) - (go target-falling #f) - ) (none) ) (defbehavior slide-down-test target () - (if - (and - (zero? (logand (-> self control status) 129)) - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (logtest? (-> self control status) 4) - (< 0.5 (-> self control surface-angle)) - ) - (go target-slide-down) - ) + (if (and + (zero? (logand (-> self control status) 129)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (logtest? (-> self control status) 4) + (< 0.5 (-> self control surface-angle)) + ) + (go target-slide-down) + ) (none) ) (defbehavior smack-surface? target ((arg0 symbol)) - (and - (< 0.7 (-> self control touch-angle)) - (and - (< (-> self control surface-angle) 0.3) - (logtest? (-> self control status) 8) - (or arg0 (zero? (logand (-> self control status) 32))) - ) - ) + (and (< 0.7 (-> self control touch-angle)) (and + (< (-> self control surface-angle) 0.3) + (logtest? (-> self control status) 8) + (or arg0 (zero? (logand (-> self control status) 32))) + ) + ) ) (defbehavior can-wheel? target () (and - (logtest? (-> self control status) 1) - (or - (zero? (logand (-> self control status) 8)) - (>= 0.7 (-> self control touch-angle)) + (logtest? (-> self control status) 1) + (or (zero? (logand (-> self control status) 8)) (>= 0.7 (-> self control touch-angle))) + (and (< (-> self control unknown-float61) 0.7) (zero? (logand (-> self state-flags) 8192))) ) - (and - (< (-> self control unknown-float61) 0.7) - (zero? (logand (-> self state-flags) 8192)) - ) - ) ) (defbehavior can-duck? target () (and - (logtest? (-> self control status) 1) - (>= (-> self control unknown-float60) 0.7) - (zero? (logand (-> self water flags) 6144)) - (zero? (logand (-> self state-flags) 8192)) - (or - (zero? (logand (-> self water flags) 1024)) - (< - (- - (- - (-> self control trans y) - (- (-> self water base-height) (-> self water wade-height)) - ) + (logtest? (-> self control status) 1) + (>= (-> self control unknown-float60) 0.7) + (zero? (logand (-> self water flags) 6144)) + (zero? (logand (-> self state-flags) 8192)) + (or + (zero? (logand (-> self water flags) 1024)) + (< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) ) - 2457.6 - ) ) - ) ) (defbehavior can-exit-duck? target () (let ((gp-0 (new 'stack-no-clear 'collide-using-spheres-params))) - (let ((s5-0 (new 'stack-no-clear 'inline-array 'sphere 2))) - (dotimes (s4-0 2) - ((method-of-type sphere new) (the-as symbol (-> s5-0 s4-0)) sphere) - ) - (set! (-> s5-0 0 quad) (-> self control trans quad)) - (set! (-> s5-0 0 y) (+ 5734.4 (-> *TARGET-bank* body-radius) (-> s5-0 0 y))) - (set! (-> s5-0 0 w) (-> *TARGET-bank* body-radius)) - (set! (-> s5-0 1 quad) (-> self control trans quad)) - (set! (-> s5-0 1 y) (+ 2867.2 (-> *TARGET-bank* body-radius) (-> s5-0 1 y))) - (set! (-> s5-0 1 w) (-> *TARGET-bank* body-radius)) - (set! (-> gp-0 spheres) (the-as (pointer sphere) s5-0)) + (let ((s5-0 (new 'stack-no-clear 'inline-array 'sphere 2))) + (dotimes (s4-0 2) + ((method-of-type sphere new) (the-as symbol (-> s5-0 s4-0)) sphere) + ) + (set! (-> s5-0 0 quad) (-> self control trans quad)) + (set! (-> s5-0 0 y) (+ 5734.4 (-> *TARGET-bank* body-radius) (-> s5-0 0 y))) + (set! (-> s5-0 0 w) (-> *TARGET-bank* body-radius)) + (set! (-> s5-0 1 quad) (-> self control trans quad)) + (set! (-> s5-0 1 y) (+ 2867.2 (-> *TARGET-bank* body-radius) (-> s5-0 1 y))) + (set! (-> s5-0 1 w) (-> *TARGET-bank* body-radius)) + (set! (-> gp-0 spheres) (the-as (pointer sphere) s5-0)) + ) + (set! (-> gp-0 num-spheres) (the-as uint 2)) + (set! (-> gp-0 collide-with) (-> self control root-prim collide-with)) + (set! (-> gp-0 proc) #f) + (set! (-> gp-0 ignore-pat) (the-as uint 1)) + (set! (-> gp-0 solid-only) #t) + (if (dummy-11 *collide-cache* gp-0) + #f + #t + ) ) - (set! (-> gp-0 num-spheres) (the-as uint 2)) - (set! (-> gp-0 collide-with) (-> self control root-prim collide-with)) - (set! (-> gp-0 proc) #f) - (set! (-> gp-0 ignore-pat) (the-as uint 1)) - (set! (-> gp-0 solid-only) #t) - (if (dummy-11 *collide-cache* gp-0) - #f - #t - ) - ) ) (defbehavior can-hands? target ((arg0 symbol)) (cond - ((or - (zero? - (logand - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 0 - ) - (pad-buttons square) - ) - ) - (or - (and - (logtest? (-> self state-flags) 4096) + ((or + (zero? (logand + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons square) + ) + ) (or - (zero? (logand (-> self state-flags) #x4000)) - (not (and - (= (-> self fact-info-target eco-type) 1) - (>= (-> self fact-info-target eco-level) 1.0) - ) + (logtest? (-> self state-flags) 4096) + (or + (zero? (logand (-> self state-flags) #x4000)) + (not (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0))) + ) + ) + (logtest? (-> self control unknown-surface01 flags) 384) ) - ) ) - (logtest? (-> self control unknown-surface01 flags) 384) - ) + #f ) - #f - ) - ((and - (or - (not arg0) - (and - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (< (-> self control unknown-float61) 0.7) + ((and + (or (not arg0) (and + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (< (-> self control unknown-float61) 0.7) + ) + ) + (>= (- (-> *display* base-frame-counter) + (the-as int (if (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) + (-> *TARGET-bank* yellow-attack-timeout) + (-> *TARGET-bank* attack-timeout) + ) + ) + ) + (-> self control unknown-dword31) + ) ) - ) - (>= - (- - (-> *display* base-frame-counter) - (the-as - int - (if - (and - (= (-> self fact-info-target eco-type) 1) - (>= (-> self fact-info-target eco-level) 1.0) - ) - (-> *TARGET-bank* yellow-attack-timeout) - (-> *TARGET-bank* attack-timeout) - ) - ) - ) - (-> self control unknown-dword31) - ) + #t ) - #t + (else + (set! (-> self control unknown-dword32) (-> *display* base-frame-counter)) + #f + ) ) - (else - (set! (-> self control unknown-dword32) (-> *display* base-frame-counter)) - #f - ) - ) ) (defbehavior can-feet? target () (cond - ((or - (logtest? (-> self state-flags) 4096) - (logtest? (-> self control unknown-surface01 flags) 640) + ((or (logtest? (-> self state-flags) 4096) (logtest? (-> self control unknown-surface01 flags) 640)) + #f ) - #f - ) - ((>= - (- - (-> *display* base-frame-counter) - (the-as int (-> *TARGET-bank* attack-timeout)) + ((>= (- (-> *display* base-frame-counter) (the-as int (-> *TARGET-bank* attack-timeout))) + (-> self control unknown-dword33) + ) + #t + ) + (else + (set! (-> self control unknown-dword34) (-> *display* base-frame-counter)) + #f ) - (-> self control unknown-dword33) - ) - #t ) - (else - (set! (-> self control unknown-dword34) (-> *display* base-frame-counter)) - #f - ) - ) ) (defbehavior vector-local+! target ((arg0 vector) (arg1 vector)) (let ((s5-0 (new-stack-vector0))) - (vector-matrix*! s5-0 arg1 (-> self control unknown-matrix01)) - (vector+! arg0 arg0 s5-0) - ) + (vector-matrix*! s5-0 arg1 (-> self control unknown-matrix01)) + (vector+! arg0 arg0 s5-0) + ) ) (defbehavior move-forward target ((arg0 float)) (let ((a1-0 (new-stack-vector0)) (gp-0 (new-stack-vector0)) ) - (set-vector! a1-0 0.0 0.0 arg0 1.0) - (vector-matrix*! gp-0 a1-0 (-> self control unknown-matrix01)) - (vector+! (-> self control transv) (-> self control transv) gp-0) - ) + (set-vector! a1-0 0.0 0.0 arg0 1.0) + (vector-matrix*! gp-0 a1-0 (-> self control unknown-matrix01)) + (vector+! (-> self control transv) (-> self control transv) gp-0) + ) ) (defbehavior set-forward-vel target ((arg0 float)) (let ((gp-0 (new-stack-vector0))) - (vector-matrix*! - gp-0 - (-> self control transv) - (-> self control unknown-matrix00) + (vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> gp-0 z) arg0) + (set! (-> gp-0 x) 0.0) + (vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01)) ) - (set! (-> gp-0 z) arg0) - (set! (-> gp-0 x) 0.0) - (vector-matrix*! - (-> self control transv) - gp-0 - (-> self control unknown-matrix01) - ) - ) ) (defbehavior delete-back-vel target () (let ((s5-0 (new-stack-vector0))) - (vector-z-quaternion! s5-0 (-> self control dir-targ)) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (vector-dot s5-0 (-> self control transv))) - ) - 0.0 - (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 s5-0 f30-0)) - (let* ((f0-3 (vector-length gp-0)) - (f1-0 f0-3) - ) - (if (< f30-0 0.0) - (set! f30-0 0.0) + (vector-z-quaternion! s5-0 (-> self control dir-targ)) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot s5-0 (-> self control transv))) + ) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 s5-0 f30-0)) + (let* ((f0-3 (vector-length gp-0)) + (f1-0 f0-3) + ) + (if (< f30-0 0.0) + (set! f30-0 0.0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) s5-0 f30-0) + (vector-float*! gp-0 gp-0 (/ f0-3 f1-0)) + ) + ) ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) s5-0 f30-0) - (vector-float*! gp-0 gp-0 (/ f0-3 f1-0)) - ) - ) ) - ) 0 (none) ) (defbehavior set-side-vel target ((arg0 float)) (let ((gp-0 (new-stack-vector0))) - (vector-matrix*! - gp-0 - (-> self control transv) - (-> self control unknown-matrix00) + (vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> gp-0 x) arg0) + (set! (-> gp-0 z) 0.0) + (vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01)) ) - (set! (-> gp-0 x) arg0) - (set! (-> gp-0 z) 0.0) - (vector-matrix*! - (-> self control transv) - gp-0 - (-> self control unknown-matrix01) - ) - ) ) (defun target-timed-invulnerable ((arg0 seconds) (arg1 target)) @@ -1191,7 +981,7 @@ ) (defun target-timed-invulnerable-off ((arg0 target)) - (set! (-> arg0 draw status) (logand -3 (-> arg0 draw status))) + (logclear! (-> arg0 draw status) (draw-status drwf01)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) (dummy-53 (-> arg0 control) 2 0 4096) 0 @@ -1200,272 +990,223 @@ (defmethod dummy-9 attack-info ((obj attack-info) (arg0 attack-info)) (with-pp - (let ((s4-0 (-> arg0 mask))) - (set! (-> obj mask) (-> arg0 mask)) - (if (logtest? s4-0 8) - (set! (-> obj attacker) (-> arg0 attacker)) - ) - (if (logtest? s4-0 32) - (set! (-> obj mode) (-> arg0 mode)) - ) - (if (logtest? s4-0 2048) - (set! (-> obj angle) (-> arg0 angle)) - ) - (if (logtest? s4-0 512) - (set! (-> obj dist) (-> arg0 dist)) - ) - (if (logtest? s4-0 1024) - (set! (-> obj control) (-> arg0 control)) - ) - (if (logtest? s4-0 256) - (set! (-> obj speed) (-> arg0 speed)) - ) - (if (logtest? s4-0 64) - (set! (-> obj shove-back) (-> arg0 shove-back)) - ) - (if (logtest? s4-0 128) - (set! (-> obj shove-up) (-> arg0 shove-up)) - ) - (if (logtest? s4-0 16) - (set! (-> obj invinc-time) (-> arg0 invinc-time)) - ) - (if (logtest? s4-0 4096) - (set! (-> obj rotate-to) (-> arg0 rotate-to)) - ) - (if (logtest? s4-0 4) - (set! (-> obj intersection quad) (-> arg0 intersection quad)) - ) - (cond - ((zero? (logand s4-0 2)) - (let* ((s3-0 pp) - (s2-0 (handle->process (-> obj attacker))) - (v1-39 - (if - (and - (nonzero? s2-0) - (type-type? (-> s2-0 type) process-drawable) + (let ((s4-0 (-> arg0 mask))) + (set! (-> obj mask) (-> arg0 mask)) + (if (logtest? s4-0 8) + (set! (-> obj attacker) (-> arg0 attacker)) + ) + (if (logtest? s4-0 32) + (set! (-> obj mode) (-> arg0 mode)) + ) + (if (logtest? s4-0 2048) + (set! (-> obj angle) (-> arg0 angle)) + ) + (if (logtest? s4-0 512) + (set! (-> obj dist) (-> arg0 dist)) + ) + (if (logtest? s4-0 1024) + (set! (-> obj control) (-> arg0 control)) + ) + (if (logtest? s4-0 256) + (set! (-> obj speed) (-> arg0 speed)) + ) + (if (logtest? s4-0 64) + (set! (-> obj shove-back) (-> arg0 shove-back)) + ) + (if (logtest? s4-0 128) + (set! (-> obj shove-up) (-> arg0 shove-up)) + ) + (if (logtest? s4-0 16) + (set! (-> obj invinc-time) (-> arg0 invinc-time)) + ) + (if (logtest? s4-0 4096) + (set! (-> obj rotate-to) (-> arg0 rotate-to)) + ) + (if (logtest? s4-0 4) + (set! (-> obj intersection quad) (-> arg0 intersection quad)) + ) + (cond + ((zero? (logand s4-0 2)) + (let* ((s3-0 pp) + (s2-0 (handle->process (-> obj attacker))) + (v1-39 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) + s2-0 + ) + ) ) - s2-0 + (when v1-39 + (set! (-> obj trans quad) (-> (the-as process-drawable v1-39) root trans quad)) + (vector-! + (-> obj vector) + (-> (the-as process-drawable s3-0) root trans) + (-> (the-as process-drawable v1-39) root trans) ) - ) + (logior! (-> obj mask) 2) ) - (when v1-39 - (set! - (-> obj trans quad) - (-> (the-as process-drawable v1-39) root trans quad) + ) ) - (vector-! - (-> obj vector) - (-> (the-as process-drawable s3-0) root trans) - (-> (the-as process-drawable v1-39) root trans) - ) - (logior! (-> obj mask) 2) - ) - ) - ) - (else - (let* ((s3-1 (handle->process (-> obj attacker))) - (a0-16 - (if - (and - (nonzero? s3-1) - (type-type? (-> s3-1 type) process-drawable) + (else + (let* ((s3-1 (handle->process (-> obj attacker))) + (a0-16 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) process-drawable)) + s3-1 + ) + ) + ) + (if a0-16 + (set! (-> obj trans quad) (-> (the-as process-drawable a0-16) root trans quad)) ) - s3-1 - ) + ) + (set! (-> obj vector quad) (-> arg0 vector quad)) + (if (zero? (logand s4-0 64)) + (set! (-> obj shove-back) (vector-xz-length (-> obj vector))) ) - ) - (if a0-16 - (set! - (-> obj trans quad) - (-> (the-as process-drawable a0-16) root trans quad) - ) + (if (zero? (logand s4-0 128)) + (set! (-> obj shove-up) (-> obj vector y)) + ) + ) ) - ) - (set! (-> obj vector quad) (-> arg0 vector quad)) - (if (zero? (logand s4-0 64)) - (set! (-> obj shove-back) (vector-xz-length (-> obj vector))) - ) - (if (zero? (logand s4-0 128)) - (set! (-> obj shove-up) (-> obj vector y)) - ) + (if (zero? (logand (-> obj mask) 512)) + (set! (-> obj dist) (fabs (-> obj shove-back))) + ) + (if (logtest? s4-0 1) + (set! (-> obj trans quad) (-> arg0 trans quad)) + ) ) - ) - (if (zero? (logand (-> obj mask) 512)) - (set! (-> obj dist) (fabs (-> obj shove-back))) - ) - (if (logtest? s4-0 1) - (set! (-> obj trans quad) (-> arg0 trans quad)) - ) + (none) ) - (none) - ) ) -(defbehavior - ground-tween-initialize target - ((arg0 ground-tween-info) - (arg1 uint) - (arg2 uint) - (arg3 uint) - (arg4 uint) - (arg5 uint) - (arg6 uint) - ) +(defbehavior ground-tween-initialize target ((arg0 ground-tween-info) (arg1 uint) (arg2 uint) (arg3 uint) (arg4 uint) (arg5 uint) (arg6 uint)) (set! (-> arg0 group 0) arg2) (set! (-> arg0 group 1) arg3) (set! (-> arg0 group 2) arg4) (set! (-> arg0 group 3) arg5) (set! (-> arg0 group 4) arg6) (dotimes (s3-0 3) - (set! (-> arg0 chan s3-0) (+ arg1 s3-0)) - (let ((s2-0 (-> self skel root-channel (-> arg0 chan s3-0)))) - (set! (-> s2-0 frame-interp) (fabs (-> arg0 blend s3-0))) - (joint-control-channel-group-eval! - s2-0 - (the-as art-joint-anim arg2) - num-func-identity - ) - (set! (-> s2-0 frame-num) 0.0) + (set! (-> arg0 chan s3-0) (+ arg1 s3-0)) + (let ((s2-0 (-> self skel root-channel (-> arg0 chan s3-0)))) + (set! (-> s2-0 frame-interp) (fabs (-> arg0 blend s3-0))) + (joint-control-channel-group-eval! s2-0 (the-as art-joint-anim arg2) num-func-identity) + (set! (-> s2-0 frame-num) 0.0) + ) ) - ) arg0 ) -(defbehavior - ground-tween-update target - ((arg0 ground-tween-info) (arg1 float) (arg2 float)) +(defbehavior ground-tween-update target ((arg0 ground-tween-info) (arg1 float) (arg2 float)) (let ((f0-1 (fmax -1.0 (fmin 1.0 (* 2.0 arg1)))) (f30-0 (fmax -1.0 (fmin 1.0 (* 1.6 arg2)))) ) - (let ((f1-5 (fabs (- f0-1 (the-as float (-> arg0 blend 1)))))) - (set! - (-> arg0 blend 1) - (seek - (the-as float (-> arg0 blend 1)) - f0-1 - (fmax 0.05 (fmin 0.2 (* 0.25 f1-5))) + (let ((f1-5 (fabs (- f0-1 (the-as float (-> arg0 blend 1)))))) + (set! (-> arg0 blend 1) (seek (the-as float (-> arg0 blend 1)) f0-1 (fmax 0.05 (fmin 0.2 (* 0.25 f1-5))))) ) - ) - ) - (let ((f0-7 (fabs (- f30-0 (the-as float (-> arg0 blend 2)))))) - (set! - (-> arg0 blend 2) - (seek - (the-as float (-> arg0 blend 2)) - f30-0 - (fmax 0.05 (fmin 0.2 (* 0.25 f0-7))) + (let ((f0-7 (fabs (- f30-0 (the-as float (-> arg0 blend 2)))))) + (set! (-> arg0 blend 2) (seek (the-as float (-> arg0 blend 2)) f30-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-7))))) ) - ) ) - ) (cond - ((>= (-> arg0 blend 1) 0.0) - (let ((v1-4 (-> self skel root-channel (-> arg0 chan 1)))) - (set! (-> v1-4 frame-interp) (fabs (-> arg0 blend 1))) - (set! (-> v1-4 frame-group) (the-as art-joint-anim (-> arg0 group 1))) + ((>= (-> arg0 blend 1) 0.0) + (let ((v1-4 (-> self skel root-channel (-> arg0 chan 1)))) + (set! (-> v1-4 frame-interp) (fabs (-> arg0 blend 1))) + (set! (-> v1-4 frame-group) (the-as art-joint-anim (-> arg0 group 1))) + ) ) + (else + (let ((v1-7 (-> self skel root-channel (-> arg0 chan 1)))) + (set! (-> v1-7 frame-interp) (fabs (-> arg0 blend 1))) + (set! (-> v1-7 frame-group) (the-as art-joint-anim (-> arg0 group 2))) + ) + ) ) - (else - (let ((v1-7 (-> self skel root-channel (-> arg0 chan 1)))) - (set! (-> v1-7 frame-interp) (fabs (-> arg0 blend 1))) - (set! (-> v1-7 frame-group) (the-as art-joint-anim (-> arg0 group 2))) - ) - ) - ) (cond - ((>= (-> arg0 blend 2) 0.0) - (let ((v1-10 (-> self skel root-channel (-> arg0 chan 2)))) - (set! (-> v1-10 frame-interp) (fabs (-> arg0 blend 2))) - (set! (-> v1-10 frame-group) (the-as art-joint-anim (-> arg0 group 4))) + ((>= (-> arg0 blend 2) 0.0) + (let ((v1-10 (-> self skel root-channel (-> arg0 chan 2)))) + (set! (-> v1-10 frame-interp) (fabs (-> arg0 blend 2))) + (set! (-> v1-10 frame-group) (the-as art-joint-anim (-> arg0 group 4))) + ) ) + (else + (let ((v1-13 (-> self skel root-channel (-> arg0 chan 2)))) + (set! (-> v1-13 frame-interp) (fabs (-> arg0 blend 2))) + (set! (-> v1-13 frame-group) (the-as art-joint-anim (-> arg0 group 3))) + ) + ) ) - (else - (let ((v1-13 (-> self skel root-channel (-> arg0 chan 2)))) - (set! (-> v1-13 frame-interp) (fabs (-> arg0 blend 2))) - (set! (-> v1-13 frame-group) (the-as art-joint-anim (-> arg0 group 3))) - ) - ) - ) 0 (none) ) (defun target-pos ((arg0 int)) (let ((a1-0 *target*)) - (cond - (a1-0 - (if (zero? arg0) - (-> a1-0 control trans) - (vector<-cspace! (new 'static 'vector) (-> a1-0 node-list data arg0)) + (cond + (a1-0 + (if (zero? arg0) + (-> a1-0 control trans) + (vector<-cspace! (new 'static 'vector) (-> a1-0 node-list data arg0)) + ) + ) + (else + (camera-pos) + ) ) - ) - (else - (camera-pos) - ) ) - ) ) (defun target-cam-pos () (let ((gp-0 *target*)) - (the-as vector (cond - ((not gp-0) - (camera-pos) - ) - ((logtest? (-> gp-0 state-flags) 1024) - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-draw1) - (-> gp-0 alt-cam-pos) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (-> gp-0 alt-cam-pos) - ) - ((logtest? #x20000 (-> gp-0 state-flags)) - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-draw1) - (-> gp-0 alt-cam-pos) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (-> gp-0 alt-cam-pos) - ) - ((logtest? #x80000 (-> gp-0 state-flags)) - (let ((s5-0 (the-as object (new 'static 'vector)))) - (set! - (-> (the-as vector s5-0) quad) - (-> (&-> (-> gp-0 control) unknown-qword00) 0) - ) - (set! - (-> (the-as vector s5-0) y) - (fmax (-> (the-as vector s5-0) y) (-> gp-0 alt-cam-pos y)) - ) - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-draw1) - (the-as vector s5-0) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - s5-0 - ) - ) - (else - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-draw1) - (the-as vector (&-> (-> gp-0 control) unknown-qword00)) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (&-> (-> gp-0 control) unknown-qword00) - ) - ) + (the-as + vector + (cond + ((not gp-0) + (camera-pos) + ) + ((logtest? (-> gp-0 state-flags) 1024) + (add-debug-sphere + *display-camera-marks* + (bucket-id debug-draw1) + (-> gp-0 alt-cam-pos) + 819.2 + (new 'static 'rgba :r #xff :a #x80) + ) + (-> gp-0 alt-cam-pos) + ) + ((logtest? #x20000 (-> gp-0 state-flags)) + (add-debug-sphere + *display-camera-marks* + (bucket-id debug-draw1) + (-> gp-0 alt-cam-pos) + 819.2 + (new 'static 'rgba :r #xff :a #x80) + ) + (-> gp-0 alt-cam-pos) + ) + ((logtest? #x80000 (-> gp-0 state-flags)) + (let ((s5-0 (the-as object (new 'static 'vector)))) + (set! (-> (the-as vector s5-0) quad) (-> (&-> (-> gp-0 control) unknown-qword00) 0)) + (set! (-> (the-as vector s5-0) y) (fmax (-> (the-as vector s5-0) y) (-> gp-0 alt-cam-pos y))) + (add-debug-sphere + *display-camera-marks* + (bucket-id debug-draw1) + (the-as vector s5-0) + 819.2 + (new 'static 'rgba :r #xff :a #x80) + ) + s5-0 + ) + ) + (else + (add-debug-sphere + *display-camera-marks* + (bucket-id debug-draw1) + (the-as vector (&-> (-> gp-0 control) unknown-qword00)) + 819.2 + (new 'static 'rgba :r #xff :a #x80) + ) + (&-> (-> gp-0 control) unknown-qword00) + ) + ) + ) ) - ) ) (defun target-joint-pos () @@ -1475,23 +1216,20 @@ (return (new 'static 'vector)) ) (let ((v1-0 *target*)) - (if v1-0 - (vector<-cspace! - (new 'static 'vector) - (-> v1-0 node-list data (-> v1-0 draw origin-joint-index)) - ) - (camera-pos) + (if v1-0 + (vector<-cspace! (new 'static 'vector) (-> v1-0 node-list data (-> v1-0 draw origin-joint-index))) + (camera-pos) + ) ) - ) ) (defun target-rot () (let ((v1-0 *target*)) - (if v1-0 - (-> v1-0 control unknown-quaternion00) - *unity-quaternion* + (if v1-0 + (-> v1-0 control unknown-quaternion00) + *unity-quaternion* + ) ) - ) ) diff --git a/goal_src/game.gp b/goal_src/game.gp index 4252e31a58..355c4875a3 100644 --- a/goal_src/game.gp +++ b/goal_src/game.gp @@ -223,6 +223,18 @@ ) +;;;;;;;;;;;;;;;;;;;;; +;; engine Group +;;;;;;;;;;;;;;;;;;;;; +;; the engine group is a group of files loaded as the game engine with no levels + +(group "engine" + "out/iso/0COMMON.TXT" + "out/iso/KERNEL.CGO" + "out/iso/GAME.CGO" + ) + + ;;;;;;;;;;;;;;;;;;;;; ;; hub1 Group ;;;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/goal-lib.gc b/goal_src/goal-lib.gc index 1a50936c35..9f42fa8829 100644 --- a/goal_src/goal-lib.gc +++ b/goal_src/goal-lib.gc @@ -755,6 +755,11 @@ `(make-group "iso") ) +(defmacro mng () + "Make engine" + `(make-group "engine") + ) + (defmacro mh1 () "Make hub1" `(make-group "hub1") diff --git a/goal_src/goos-lib.gs b/goal_src/goos-lib.gs index ea54b7511e..7899f8b8c8 100644 --- a/goal_src/goos-lib.gs +++ b/goal_src/goos-lib.gs @@ -62,9 +62,15 @@ (defsmacro cddr (x) `(cdr (cdr ,x))) +(defsmacro caddr (x) + `(car (cdr (cdr ,x)))) + (defsmacro cdddr (x) `(cdr (cdr (cdr ,x)))) +(defsmacro cadddr (x) + `(car (cdr (cdr (cdr ,x))))) + (defsmacro caadr (x) `(car (car (cdr ,x)))) diff --git a/goal_src/kernel-defs.gc b/goal_src/kernel-defs.gc index b2717f664a..8545cff652 100644 --- a/goal_src/kernel-defs.gc +++ b/goal_src/kernel-defs.gc @@ -176,7 +176,6 @@ (define-extern reset-path (function none)) (define-extern reset-graph (function int int int int none)) -;; dma-sync (define-extern dma-sync (function pointer int int int)) ;; gs-put-imr ;; gs-get-imr diff --git a/goal_src/kernel/gkernel-h.gc b/goal_src/kernel/gkernel-h.gc index e7008750f7..0ffb179a23 100644 --- a/goal_src/kernel/gkernel-h.gc +++ b/goal_src/kernel/gkernel-h.gc @@ -442,7 +442,7 @@ ) (defmacro ppointer->handle (pproc) - `(let ((the-process ,pproc)) + `(let ((the-process (the-as (pointer process) ,pproc))) (new 'static 'handle :process the-process :pid (-> the-process 0 pid)) ) ) diff --git a/goal_src/kernel/gkernel.gc b/goal_src/kernel/gkernel.gc index d9bd569227..6fca7f5eb7 100644 --- a/goal_src/kernel/gkernel.gc +++ b/goal_src/kernel/gkernel.gc @@ -1816,7 +1816,7 @@ ;; get the return address (the compiler won't touch the stack because we're an asm-func) (.pop temp) (.push temp) - ;; make it a GOAL address so it fits in 32 bitys + ;; make it a GOAL address so it fits in 32 bits (.sub temp off) ;; store it (set! (-> obj ra) (the int temp)) diff --git a/goal_src/levels/beach/beach-rocks.gc b/goal_src/levels/beach/beach-rocks.gc index 23e1452cc3..0f61e2ce17 100644 --- a/goal_src/levels/beach/beach-rocks.gc +++ b/goal_src/levels/beach/beach-rocks.gc @@ -15,284 +15,263 @@ :longest-edge (meters 11) ) -(set! - (-> *part-group-id-table* 553) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x384 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-beach-rocks-start" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 2340 :period 75 :length 10) - (sp-item 2341 :period 75 :length 10) - (sp-item 2289 :period 75 :length 10) - ) - :bounds (new 'static 'sphere :w 262144.0) - ) - ) +(set! (-> *part-group-id-table* 553) (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-beach-rocks-start" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2340 :period 75 :length 10) + (sp-item 2341 :period 75 :length 10) + (sp-item 2289 :period 75 :length 10) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) -(set! - (-> *part-id-table* 2341) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) - (sp-rnd-flt spt-num 3.0 6.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 0.25) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 0.25) (meters 1.0) 1.0) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 96.0 64.0 1.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.0)) - (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-rnd-flt spt-accel-y -11.605333 -8.874666 1.0) - (sp-flt spt-friction 0.97) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 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 5.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2341) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 3.0 6.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 96.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -11.605333 -8.874666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 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 5.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2340) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.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-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) - (sp-rnd-flt spt-r 64.0 128.0 1.0) - (sp-rnd-flt spt-g 128.0 128.0 1.0) - (sp-rnd-flt spt-b 0.0 64.0 1.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.0)) - (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.08533333) - (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) - (sp-flt spt-friction 0.93) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 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 5.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2340) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.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-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.93) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 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 5.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2289) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 26 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 1.0 3.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 64.0 1.0) - (sp-rnd-flt spt-g 128.0 64.0 1.0) - (sp-flt spt-b 64.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.04)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.042666666) - (sp-flt spt-fade-g -0.061333332) - (sp-flt spt-fade-b -0.042666666) - (sp-flt spt-fade-a -0.032) - (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 6.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2289) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.042666666) + (sp-flt spt-fade-g -0.061333332) + (sp-flt spt-fade-b -0.042666666) + (sp-flt spt-fade-a -0.032) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 6.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 554) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-beach-rocks-fall" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2290 :period 15 :length 5) - ) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 554) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-beach-rocks-fall" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2290 :period 15 :length 5)) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) -(set! - (-> *part-id-table* 2290) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 26 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 3.0 3.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 7.0) (meters 9.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 64.0 1.0) - (sp-rnd-flt spt-g 128.0 64.0 1.0) - (sp-flt spt-b 64.0) - (sp-rnd-flt spt-a 16.0 48.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.026666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.10666667) - (sp-flt spt-fade-g -0.15333334) - (sp-flt spt-fade-b -0.10666667) - (sp-flt spt-fade-a -0.10666667) - (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) - (sp-flt spt-friction 0.98) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2290) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 3.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 7.0) (meters 9.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.026666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 555) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x384 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-beach-rocks-land" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 2342 :period 900 :length 40) - (sp-item 2343 :period 900 :length 40) - (sp-item 2291 :period 900 :length 40) - ) - :bounds (new 'static 'sphere :w 262144.0) - ) - ) +(set! (-> *part-group-id-table* 555) (new 'static 'sparticle-launch-group + :length 3 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-beach-rocks-land" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 2342 :period 900 :length 40) + (sp-item 2343 :period 900 :length 40) + (sp-item 2291 :period 900 :length 40) + ) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) -(set! - (-> *part-id-table* 2343) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 32.0) - (sp-flt spt-y (meters -3.0)) - (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 32.0) (meters 10.0) 1.0) - (sp-rnd-flt spt-r 192.0 64.0 1.0) - (sp-rnd-flt spt-g 128.0 64.0 1.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-r -0.10666667) - (sp-flt spt-fade-g -0.15333334) - (sp-flt spt-fade-b -0.10666667) - (sp-flt spt-fade-a -3.2) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2343) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters -3.0)) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 32.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.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-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2342) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-rnd-flt spt-num 64.0 64.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.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-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) - (sp-rnd-flt spt-r 128.0 64.0 1.0) - (sp-rnd-flt spt-g 192.0 64.0 1.0) - (sp-rnd-flt spt-b 0.0 64.0 1.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.21333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.0)) - (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.08533333) - (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 20.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 5.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2342) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 64.0 64.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.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-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 20.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 5.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2291) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 26 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 32.0 32.0 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 8.0) (meters 8.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 64.0 1.0) - (sp-rnd-flt spt-g 128.0 64.0 1.0) - (sp-flt spt-b 64.0) - (sp-rnd-flt spt-a 16.0 48.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.32) 1.0) - (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.02) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.10666667) - (sp-flt spt-fade-g -0.15333334) - (sp-flt spt-fade-b -0.10666667) - (sp-flt spt-fade-a -0.10666667) - (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) - (sp-flt spt-friction 0.85) - (sp-int spt-timer 1500) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 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 2.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2291) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 32.0 32.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 8.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.32) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.02) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 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 2.0) 1.0) + (sp-end) + ) + ) + ) (deftype beach-rock (process-drawable) ((root-override collide-shape-moving :offset 112) @@ -317,75 +296,51 @@ (defmethod relocate beach-rock ((obj beach-rock) (arg0 int)) (if (nonzero? (-> obj part-falling)) - (set! - (-> obj part-falling) - (the-as - sparticle-launch-control - (+ (the-as int (-> obj part-falling)) arg0) - ) - ) - ) + (set! (-> obj part-falling) (the-as sparticle-launch-control (+ (the-as int (-> obj part-falling)) arg0))) + ) (if (nonzero? (-> obj part-landing)) - (set! - (-> obj part-landing) - (the-as - sparticle-launch-control - (+ (the-as int (-> obj part-landing)) arg0) - ) - ) - ) - (the-as - beach-rock - ((the-as - (function process-drawable int none) - (find-parent-method beach-rock 7) - ) - obj - arg0 - ) - ) + (set! (-> obj part-landing) (the-as sparticle-launch-control (+ (the-as int (-> obj part-landing)) arg0))) + ) + (the-as beach-rock ((the-as (function process-drawable int none) (find-parent-method beach-rock 7)) obj arg0)) ) (defmethod deactivate beach-rock ((obj beach-rock)) (if (nonzero? (-> obj part-falling)) - (kill-and-free-particles (-> obj part-falling)) - ) + (kill-and-free-particles (-> obj part-falling)) + ) (if (nonzero? (-> obj part-landing)) - (kill-and-free-particles (-> obj part-landing)) - ) - ((the-as (function process-drawable none) (find-parent-method beach-rock 10)) - obj - ) + (kill-and-free-particles (-> obj part-landing)) + ) + ((the-as (function process-drawable none) (find-parent-method beach-rock 10)) obj) (none) ) (defstate idle (beach-rock) :virtual #t :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (set! (-> self trigger) #t) - (go-virtual falling) - ) - (('loading) - (go-virtual loading) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('trigger) + (set! (-> self trigger) #t) + (go-virtual falling) + ) + (('loading) + (go-virtual loading) + ) + ) + ) :code (behavior () - (if (-> self trigger) - (go-virtual falling) + (if (-> self trigger) + (go-virtual falling) + ) + (ja-channel-set! 0) + (ja-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) ) - (ja-channel-set! 0) - (ja-post) - (while #t - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - (none) - ) ) (defstate loading (beach-rock) @@ -394,172 +349,126 @@ (-> (the-as state (method-of-type beach-rock idle)) event) :code (behavior () - (while #t - (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) - (suspend) + (while #t + (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) + (suspend) + ) + (none) ) - (none) - ) ) (defstate falling (beach-rock) :virtual #t :trans (behavior () - (set! (-> self draw bounds w) 819200.0) - (let ((f30-0 (ja-aframe-num 0))) - (when (and (< -50.0 f30-0) (< f30-0 158.0)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root-override trans quad)) - (spawn (-> self part) gp-0) - (set! (-> gp-0 x) (+ 122880.0 (-> gp-0 x))) - (set! (-> gp-0 z) (+ 102400.0 (-> gp-0 z))) - (spawn (-> self part) gp-0) + (set! (-> self draw bounds w) 819200.0) + (let ((f30-0 (ja-aframe-num 0))) + (when (and (< -50.0 f30-0) (< f30-0 158.0)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root-override trans quad)) + (spawn (-> self part) gp-0) + (set! (-> gp-0 x) (+ 122880.0 (-> gp-0 x))) + (set! (-> gp-0 z) (+ 102400.0 (-> gp-0 z))) + (spawn (-> self part) gp-0) + ) + ) + (if (and (< 200.0 f30-0) (< f30-0 275.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3))) + ) + (if (and (< 270.0 f30-0) (< f30-0 333.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4))) + ) + (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) + (spawn (-> self part-landing) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4))) + ) + (if (and (< 169.0 f30-0) (< f30-0 202.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5))) + ) + (if (and (< 240.0 f30-0) (< f30-0 270.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6))) + ) + (set! (-> self prev-frame) f30-0) ) - ) - (if (and (< 200.0 f30-0) (< f30-0 275.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) - ) - ) - (if (and (< 270.0 f30-0) (< f30-0 333.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) - ) - ) - (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) - (spawn - (-> self part-landing) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) - ) - ) - (if (and (< 169.0 f30-0) (< f30-0 202.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)) - ) - ) - (if (and (< 240.0 f30-0) (< f30-0 270.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)) - ) - ) - (set! (-> self prev-frame) f30-0) + (none) ) - (none) - ) :code (behavior () - (local-vars (v1-3 symbol) (v1-49 symbol)) - (until v1-3 - (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) - (suspend) - (set! v1-3 (or (not *target*) (process-grab? *target*))) - ) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (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 2)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - (let* ((gp-1 (get-process *default-dead-pool* othercam #x4000)) - (gp-2 (ppointer->handle (when gp-1 - (let - ((t9-5 (method-of-type othercam activate))) - (t9-5 - (the-as othercam gp-1) - self - 'othercam - (the-as pointer #x70004000) + (local-vars (v1-3 symbol) (v1-49 symbol)) + (until v1-3 + (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) + (suspend) + (set! v1-3 (or (not *target*) (process-grab? *target*))) + ) + (logclear! (-> self draw status) (draw-status drwf01)) + (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 2)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (let* ((gp-1 (get-process *default-dead-pool* othercam #x4000)) + (gp-2 (ppointer->handle (when gp-1 + (let ((t9-5 (method-of-type othercam activate))) + (t9-5 (the-as othercam gp-1) self 'othercam (the-as pointer #x70004000)) + ) + (run-now-in-process gp-1 othercam-init-by-other self 7 #f #t) + (-> gp-1 ppointer) ) - ) - (run-now-in-process - gp-1 - othercam-init-by-other - self - 7 - #f - #t - ) - (-> gp-1 ppointer) ) ) - ) - (s5-0 (get-process *default-dead-pool* fuel-cell #x4000)) - (s5-1 (ppointer->handle (when s5-0 - (let - ((t9-8 (method-of-type fuel-cell activate))) - (t9-8 - (the-as fuel-cell s5-0) - self - 'fuel-cell - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-0 - fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - ) - (-> s5-0 ppointer) - ) + (s5-0 (get-process *default-dead-pool* fuel-cell #x4000)) + (s5-1 + (ppointer->handle + (when s5-0 + (let ((t9-8 (method-of-type fuel-cell activate))) + (t9-8 (the-as fuel-cell s5-0) self 'fuel-cell (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 fuel-cell-init-as-clone (process->handle self) (-> self entity extra perm task)) + (-> s5-0 ppointer) ) + ) + ) ) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (set! (-> self movie-start) (the-as uint (-> *display* base-frame-counter))) + (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) + (ja-play-spooled-anim + (new 'static 'spool-anim + :name "lrocklrg-falling" + :index 4 + :parts 4 + :command-list + '((-150 blackout 100) (-116 blackout 0)) ) - (close-specific-task! - (-> self entity extra perm task) - (task-status need-reminder) - ) - (set! (-> self movie-start) (the-as uint (-> *display* base-frame-counter))) - (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "lrocklrg-falling" - :index 4 - :parts 4 - :command-list - '( - ((the binteger -150) - blackout - (the binteger 100) + (the-as art-joint-anim (-> self draw art-group data 2)) + (the-as art-joint-anim (-> self draw art-group data 3)) + (the-as (function process-drawable symbol) false-func) + ) + (process-entity-status! self (entity-perm-status complete) #t) + (cond + ((handle->process gp-2) + (deactivate (-> gp-2 process 0)) + ) + (else ) - ((the binteger -116) blackout 0) + ) + (let ((a0-28 (handle->process s5-1))) + (if a0-28 + (send-event a0-28 'stop-cloning) + ) ) ) - (the-as art-joint-anim (-> self draw art-group data 2)) - (the-as art-joint-anim (-> self draw art-group data 3)) - (the-as (function process-drawable symbol) false-func) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (cond - ((handle->process gp-2) - (deactivate (-> gp-2 process 0)) + (until v1-49 + (suspend) + (set! v1-49 (or (not *target*) (process-release? *target*))) ) - (else - ) - ) - (let ((a0-28 (handle->process s5-1))) - (if a0-28 - (send-event a0-28 'stop-cloning) - ) - ) + (set! (-> self draw bounds w) 20480.0) + (go-virtual fallen) + (none) ) - (until v1-49 - (suspend) - (set! v1-49 (or (not *target*) (process-release? *target*))) - ) - (set! (-> self draw bounds w) 20480.0) - (go-virtual fallen) - (none) - ) :post (the-as (function none :behavior beach-rock) transform-post) ) @@ -568,31 +477,28 @@ :virtual #t :code (behavior () - (level-hint-spawn - (game-text-id beach-seagulls-avalanche) - "sksp0025" - (the-as entity #f) - *entity-pool* - (game-task none) + (level-hint-spawn + (game-text-id beach-seagulls-avalanche) + "sksp0025" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) + ) + (TODO-RENAME-9 (-> self align)) + (let ((v1-6 (first-transform (-> self align)))) + (set! (-> self root-override trans quad) (-> self entity extra trans quad)) + (+! (-> self root-override trans y) (-> v1-6 trans y)) + ) + (suspend) + (dummy-47 (-> self root-override)) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) ) - (let ((v1-2 (-> self skel root-channel 0))) - (set! - (-> v1-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 3)) - ) - ) - (TODO-RENAME-9 (-> self align)) - (let ((v1-6 (first-transform (-> self align)))) - (set! (-> self root-override trans quad) (-> self entity extra trans quad)) - (+! (-> self root-override trans y) (-> v1-6 trans y)) - ) - (suspend) - (dummy-47 (-> self root-override)) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - (none) - ) :post (the-as (function none :behavior beach-rock) ja-post) ) @@ -602,43 +508,34 @@ (set! (-> obj align) (new 'process 'align-control obj)) (set! (-> obj trigger) #f) (logclear! (-> obj mask) (process-mask actor-pause)) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 553) obj) - ) - (set! - (-> obj part-falling) - (create-launch-control (-> *part-group-id-table* 554) obj) - ) - (set! - (-> obj part-landing) - (create-launch-control (-> *part-group-id-table* 555) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 553) obj)) + (set! (-> obj part-falling) (create-launch-control (-> *part-group-id-table* 554) obj)) + (set! (-> obj part-landing) (create-launch-control (-> *part-group-id-table* 555) obj)) (set! (-> obj prev-frame) -1000.0) (set! (-> obj draw origin-joint-index) (the-as uint 4)) - (case (get-task-status (-> obj entity extra perm task)) - (((task-status invalid)) + (case (get-task-status (-> obj entity extra perm task)) + (((task-status invalid)) (go (method-of-object obj fallen)) ) - (((task-status need-resolution)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (ja-post) - (vector<-cspace! s5-0 (-> obj node-list data 8)) - (birth-pickup-at-point - s5-0 - (pickup-type fuel-cell) - (the float (the-as int (-> obj entity extra perm task))) - #f - obj - (the-as fact-info #f) - ) + (((task-status need-resolution)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (ja-post) + (vector<-cspace! s5-0 (-> obj node-list data 8)) + (birth-pickup-at-point + s5-0 + (pickup-type fuel-cell) + (the float (the-as int (-> obj entity extra perm task))) + #f + obj + (the-as fact-info #f) + ) + ) + (go (method-of-object obj fallen)) ) - (go (method-of-object obj fallen)) + (else + (go (method-of-object obj idle)) + ) ) - (else - (go (method-of-object obj idle)) - ) - ) (none) ) @@ -653,43 +550,25 @@ (defmethod init-from-entity! lrocklrg ((obj lrocklrg) (arg0 entity-actor)) (stack-size-set! (-> obj main-thread) 512) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *lrocklrg-sg* '()) ((method-of-type beach-rock init-from-entity!) obj arg0) diff --git a/goal_src/levels/beach/lurkerworm.gc b/goal_src/levels/beach/lurkerworm.gc index 44f2231c93..7482c0c22a 100644 --- a/goal_src/levels/beach/lurkerworm.gc +++ b/goal_src/levels/beach/lurkerworm.gc @@ -40,18 +40,18 @@ (defmethod relocate lurkerworm ((obj lurkerworm) (arg0 int)) (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) + (&+! (-> obj part2) arg0) + ) (if (nonzero? (-> obj twister)) - (&+! (-> obj twister) arg0) - ) + (&+! (-> obj twister) arg0) + ) (the-as lurkerworm ((method-of-type process-drawable relocate) obj arg0)) ) (defmethod deactivate lurkerworm ((obj lurkerworm)) (if (nonzero? (-> obj part2)) - (kill-and-free-particles (-> obj part2)) - ) + (kill-and-free-particles (-> obj part2)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) @@ -64,333 +64,284 @@ :longest-edge (meters 1.5) ) -(set! - (-> *part-group-id-table* 157) - (new 'static 'sparticle-launch-group - :length 4 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-beach-sandworm" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 656 :fade-after (meters 90.0) :period 900 :length 300) - (sp-item 657 :fade-after (meters 100.0) :period 900 :length 390) - (sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120) - (sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120) - ) - :bounds (new 'static 'sphere :w 24576.0) - ) - ) +(set! (-> *part-group-id-table* 157) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-beach-sandworm" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 656 :fade-after (meters 90.0) :period 900 :length 300) + (sp-item 657 :fade-after (meters 100.0) :period 900 :length 390) + (sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120) + (sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120) + ) + :bounds (new 'static 'sphere :w 24576.0) + ) + ) -(set! - (-> *part-group-id-table* 158) - (new 'static 'sparticle-launch-group - :length 3 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-beach-sandworm-norocks" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 656 :fade-after (meters 90.0) :period 900 :length 300) - (sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120) - (sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120) - ) - :bounds (new 'static 'sphere :w 24576.0) - ) - ) +(set! (-> *part-group-id-table* 158) + (new 'static 'sparticle-launch-group + :length 3 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-beach-sandworm-norocks" + :launcher + (new 'static 'inline-array sparticle-group-item 3 + (sp-item 656 :fade-after (meters 90.0) :period 900 :length 300) + (sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120) + (sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120) + ) + :bounds (new 'static 'sphere :w 24576.0) + ) + ) -(set! - (-> *part-id-table* 656) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) - (sp-flt spt-num 4.0) - (sp-rnd-flt spt-x (meters 3.0) (meters 5.0) 1.0) - (sp-flt spt-y (meters 1.0)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 130.0 20.0 1.0) - (sp-rnd-flt spt-g 90.0 20.0 1.0) - (sp-rnd-flt spt-b 50.0 8.0 1.0) - (sp-flt spt-a 0.0) - (sp-flt spt-vel-x (meters -0.02)) - (sp-flt spt-vel-y (meters -0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) - (sp-flt spt-fade-a 0.21333334) - (sp-int spt-timer 900) - (sp-cpuinfo-flags bit2 bit12) - (sp-int-plain-rnd spt-next-time 90 59 1) - (sp-launcher-by-id spt-next-launcher 660) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 656) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters 3.0) (meters 5.0) 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 130.0 20.0 1.0) + (sp-rnd-flt spt-g 90.0 20.0 1.0) + (sp-rnd-flt spt-b 50.0 8.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-x (meters -0.02)) + (sp-flt spt-vel-y (meters -0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 0.21333334) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-int-plain-rnd spt-next-time 90 59 1) + (sp-launcher-by-id spt-next-launcher 660) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 660) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.21333334) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 660) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end)) + ) + ) -(set! - (-> *part-id-table* 658) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) - (sp-flt spt-num 0.4) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 90.0 60.0 1.0) - (sp-rnd-flt spt-g 90.0 10.0 1.0) - (sp-rnd-flt spt-b 50.0 8.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.026666667)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-flt spt-fade-a 0.32) - (sp-flt spt-accel-y -4.096) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 658) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 0.4) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 90.0 60.0 1.0) + (sp-rnd-flt spt-g 90.0 10.0 1.0) + (sp-rnd-flt spt-b 50.0 8.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.026666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-flt spt-fade-a 0.32) + (sp-flt spt-accel-y -4.096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 659) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) - (sp-flt spt-num 0.6) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 45.0 30.0 1.0) - (sp-rnd-flt spt-g 45.0 5.0 1.0) - (sp-rnd-flt spt-b 25.0 4.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) - (sp-flt spt-vel-y (meters 0.026666667)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-flt spt-fade-a 0.42666668) - (sp-flt spt-accel-y -4.096) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 659) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 0.6) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 45.0 30.0 1.0) + (sp-rnd-flt spt-g 45.0 5.0 1.0) + (sp-rnd-flt spt-b 25.0 4.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-flt spt-vel-y (meters 0.026666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-flt spt-fade-a 0.42666668) + (sp-flt spt-accel-y -4.096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 657) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) - (sp-flt spt-num 0.5) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.4) 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 75.0 45.0 1.0) - (sp-rnd-flt spt-g 75.0 10.0 1.0) - (sp-rnd-flt spt-b 40.0 6.0 1.0) - (sp-flt spt-a 96.0) - (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) - (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.026666667) 1.0) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-flt spt-accel-y -4.096) - (sp-int spt-timer 450) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 657) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.4) 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 75.0 45.0 1.0) + (sp-rnd-flt spt-g 75.0 10.0 1.0) + (sp-rnd-flt spt-b 40.0 6.0 1.0) + (sp-flt spt-a 96.0) + (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.026666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-flt spt-accel-y -4.096) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 661) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) - (sp-flt spt-num 0.1) - (sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0) - (sp-rnd-flt spt-z -2048.0 4096.0 1.0) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 90.0 60.0 1.0) - (sp-rnd-flt spt-g 90.0 10.0 1.0) - (sp-rnd-flt spt-b 50.0 8.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.00083333335) 1.0) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-flt spt-fade-a 0.21333334) - (sp-flt spt-accel-y -0.54613334) - (sp-int spt-timer 600) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 662) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 661) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-z -2048.0 4096.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 90.0 60.0 1.0) + (sp-rnd-flt spt-g 90.0 10.0 1.0) + (sp-rnd-flt spt-b 50.0 8.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.00083333335) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-flt spt-fade-a 0.21333334) + (sp-flt spt-accel-y -0.54613334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 662) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 662) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.10666667) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 662) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.10666667) (sp-end)) + ) + ) (defmethod TODO-RENAME-20 lurkerworm ((obj lurkerworm)) (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) - (set-target! (-> obj twister) (atan (-> s5-0 x) (-> s5-0 z))) - (TODO-RENAME-11 (-> obj twister)) - (let* - ((f0-5 (sqrtf (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z))))) - (f0-6 (atan (-> s5-0 y) f0-5)) - ) - (set! - (-> obj head-tilt) - (seek - (-> obj head-tilt) - f0-6 - (* 5461.3335 (-> *display* seconds-per-frame)) + (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) + (set-target! (-> obj twister) (atan (-> s5-0 x) (-> s5-0 z))) + (TODO-RENAME-11 (-> obj twister)) + (let* ((f0-5 (sqrtf (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z))))) + (f0-6 (atan (-> s5-0 y) f0-5)) + ) + (set! (-> obj head-tilt) (seek (-> obj head-tilt) f0-6 (* 5461.3335 (-> *display* seconds-per-frame)))) ) - ) ) - ) (set! (-> obj head-tilt) (fmin 8192.0 (fmax -5461.3335 (-> obj head-tilt)))) 0 (none) ) -(defbehavior - lurkerworm-prebind-function lurkerworm - ((arg0 process) (arg1 int) (arg2 lurkerworm)) +(defbehavior lurkerworm-prebind-function lurkerworm ((arg0 process) (arg1 int) (arg2 lurkerworm)) (let ((v1-0 arg2) (s5-0 (new 'stack-no-clear 'quaternion)) (gp-0 (&-> arg0 stack 324)) ) - (quaternion-axis-angle! s5-0 -1.0 0.0 0.0 (-> v1-0 head-tilt)) - (quaternion*! (the-as quaternion gp-0) (the-as quaternion gp-0) s5-0) - ) + (quaternion-axis-angle! s5-0 -1.0 0.0 0.0 (-> v1-0 head-tilt)) + (quaternion*! (the-as quaternion gp-0) (the-as quaternion gp-0) s5-0) + ) 0 (none) ) (defun lurkerworm-joint-callback ((arg0 lurkerworm)) (let ((a1-0 arg0)) - (TODO-RENAME-12 (-> a1-0 twister) a1-0) - ) + (TODO-RENAME-12 (-> a1-0 twister) a1-0) + ) 0 (none) ) (defmethod particle-effect lurkerworm ((obj lurkerworm)) - (let - ((a2-0 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 5)) - ) + (let ((a2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 5)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 661) + a2-0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) ) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 661) - a2-0 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 + (let ((a2-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 6)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 661) + a2-1 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) ) - ) - (let - ((a2-1 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 6)) - ) + (let ((a2-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 7)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 661) + a2-2 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) ) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 661) - a2-1 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 + (let ((a2-3 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 8)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 661) + a2-3 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) ) - ) - (let - ((a2-2 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 7)) - ) - ) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 661) - a2-2 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 - ) - ) - (let - ((a2-3 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 8)) - ) - ) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 661) - a2-3 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 - ) - ) 0 (none) ) -(defbehavior - lurkerworm-default-event-handler lurkerworm - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('attack) +(defbehavior lurkerworm-default-event-handler lurkerworm ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) (-> arg3 param 1) (go lurkerworm-die) ) - (('touch) - (if - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root-override) - (the-as uint 1) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + (('touch) + (if ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root-override) + (the-as uint 1) + ) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + ) ) ) - ) ) (defbehavior lurkerworm-default-post-behavior lurkerworm () @@ -408,32 +359,21 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () - (ja-channel-set! 0) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (ja-channel-set! 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :code (behavior () - (while #t - (if - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - *target* - (>= - 81920.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) + (while #t + (if (and + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + *target* + (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (go lurkerworm-spot) + ) + (suspend) ) - (go lurkerworm-spot) - ) - (suspend) + (none) ) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -443,44 +383,26 @@ lurkerworm-default-post-behavior lurkerworm-default-event-handler :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (sound-play-by-name - (static-sound-name "worm-rise1") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play-by-name (static-sound-name "worm-rise1") (new-sound-id) 1024 0 0 1 #t) + (none) ) - (none) - ) :code (behavior () - (set! (-> self part local-clock) 0) - (while #t - (spawn (-> self part) (-> self root-override trans)) - (particle-effect self) - (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (if - (and - *target* - (>= - 81920.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) + (set! (-> self part local-clock) 0) + (while #t + (spawn (-> self part) (-> self root-override trans)) + (particle-effect self) + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (if (and *target* (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (go lurkerworm-rise) + (go lurkerworm-idle) + ) ) - ) - (go lurkerworm-rise) - (go lurkerworm-idle) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -489,62 +411,33 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :code (behavior () - (ja-channel-set! 1) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 4)) - data - 0 - length + (ja-channel-set! 1) + (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) + (spawn (-> self part) (-> self root-override trans)) + (particle-effect self) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> 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! - ) + (set! (-> self strike-count) 3) + (go lurkerworm-rest) + (none) ) - (until (ja-done? 0) - (spawn (-> self part) (-> self root-override trans)) - (particle-effect self) - (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! - ) - ) - ) - (set! (-> self strike-count) 3) - (go lurkerworm-rest) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -554,115 +447,77 @@ lurkerworm-default-post-behavior lurkerworm-default-event-handler :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self vulnerable) #t) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self vulnerable) #t) + (none) + ) :exit - (behavior () - (set! (-> self vulnerable) #f) - (none) - ) + (behavior () (set! (-> self vulnerable) #f) (none)) :code (behavior () - (let* ((f30-0 10.0) - (f28-0 100.0) - (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-2 (the-as number (logior #x3f800000 v1-1))) - (s5-0 (the int (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2)))))) - (gp-1 (nonzero? (-> self strike-count))) - ) - (if gp-1 - (+! (-> self strike-count) -1) - ) - (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) - (ja-blend-eval) - (particle-effect self) - (when gp-1 - (let* ((f0-13 (- 1.0 (* 0.00009765625 (+ -16384.0 (if *target* - (vector-vector-distance - (-> - self - root-override - trans - ) - (-> - *target* - control - trans - ) - ) - 4096000.0 - ) - ) - ) - ) - ) - (f30-2 (* 0.2 f0-13)) - (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-32 (the-as number (logior #x3f800000 v1-31))) - ) - (if (< (+ -1.0 (the-as float v1-32)) f30-2) - (go lurkerworm-strike) - ) - ) - ) - (+! s5-0 -1) - (when (zero? s5-0) + (let* ((f30-0 10.0) + (f28-0 100.0) + (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-2 (the-as number (logior #x3f800000 v1-1))) + (s5-0 (the int (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2)))))) + (gp-1 (nonzero? (-> self strike-count))) + ) (if gp-1 - (go lurkerworm-strike) - (go lurkerworm-sink) - ) + (+! (-> self strike-count) -1) + ) + (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) + (ja-blend-eval) + (particle-effect self) + (when gp-1 + (let* ((f0-13 + (- 1.0 (* 0.00009765625 + (+ -16384.0 (if *target* + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + 4096000.0 + ) + ) + ) + ) + ) + (f30-2 (* 0.2 f0-13)) + (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-32 (the-as number (logior #x3f800000 v1-31))) + ) + (if (< (+ -1.0 (the-as float v1-32)) f30-2) + (go lurkerworm-strike) + ) + ) + ) + (+! s5-0 -1) + (when (zero? s5-0) + (if gp-1 + (go lurkerworm-strike) + (go lurkerworm-sink) + ) + ) + (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!) + ) + ) + (if gp-1 + (go lurkerworm-strike) + (go lurkerworm-sink) + ) ) - (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! - ) - ) - ) - (if gp-1 - (go lurkerworm-strike) - (go lurkerworm-sink) - ) + (none) ) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -672,59 +527,37 @@ lurkerworm-default-post-behavior lurkerworm-default-event-handler :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! (-> a0-0 param 0) 1.0) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 40) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! (-> gp-0 param 0) (ja-aframe 13.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 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (ja-blend-eval) - (particle-effect self) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 13.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 ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-loop!) ) - ) + (ja-channel-push! 1 40) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> gp-0 param 0) (ja-aframe 13.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 6)) num-func-seek!) + ) + (until (ja-done? 0) + (ja-blend-eval) + (particle-effect self) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 13.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 ((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! a0-8 (the-as art-joint-anim #f) num-func-seek!) + ) + (ja-channel-push! 1 40) + (go lurkerworm-rest) + (none) ) - (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! - a0-8 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (ja-channel-push! 1 40) - (go lurkerworm-rest) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -733,60 +566,31 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (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 + (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) + (spawn (-> self part2) (-> self root-override trans)) + (particle-effect self) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1))) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-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! - ) + (go lurkerworm-idle) + (none) ) - (until (ja-done? 0) - (spawn (-> self part2) (-> self root-override trans)) - (particle-effect self) - (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 lurkerworm-idle) - (none) - ) :post lurkerworm-default-post-behavior ) @@ -794,194 +598,129 @@ lurkerworm-default-post-behavior (defstate lurkerworm-die (lurkerworm) :event (the-as - (function process int symbol event-message-block object :behavior lurkerworm) - process-drawable-death-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerworm) + process-drawable-death-event-handler + ) :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v1-3 (-> self root-override root-prim))) - (set! (-> v1-3 collide-with) (the-as uint 0)) - (set! (-> v1-3 prim-core collide-as) (the-as uint 0)) - ) - 0 - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v1-3 (-> self root-override root-prim))) + (set! (-> v1-3 collide-with) (the-as uint 0)) + (set! (-> v1-3 prim-core collide-as) (the-as uint 0)) + ) + 0 + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) 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 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 1.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) + (dummy-18 self) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (dummy-18 self) - (none) - ) :post lurkerworm-default-post-behavior ) (defmethod init-from-entity! lurkerworm ((obj lurkerworm) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) - (let - ((s4-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 5) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 1)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 6) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-2) + ) + (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 1)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 7) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-3) + ) + (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 1)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 8) + (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-4) + ) + (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core offense) 2) + (set! (-> s2-5 transform-index) 11) + (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) + (append-prim s3-0 s2-5) + ) ) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) 3) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) 5) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) - (set! (-> s2-2 transform-index) 6) - (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-2) - ) - (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) - (set! (-> s2-3 transform-index) 7) - (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-3) - ) - (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) - (set! (-> s2-4 transform-index) 8) - (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-4) - ) - (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 2) - (set! (-> s2-5 transform-index) 11) - (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-5) - ) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *lurkerworm-sg* '()) - (set! - (-> obj fact) - (new - 'process - 'fact-info-enemy - obj - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) + (set! (-> obj fact) + (new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) (set! (-> obj angle) 0.0) (set! (-> obj vulnerable) #f) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 157) obj) - ) - (set! - (-> obj part2) - (create-launch-control (-> *part-group-id-table* 158) obj) - ) - (set! - (-> obj twister) - (new 'process 'twister 3 15 1092.2667 72.81778 0.25 0.001) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 157) obj)) + (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 158) obj)) + (set! (-> obj twister) (new 'process 'twister 3 15 1092.2667 72.81778 0.25 0.001)) (TODO-RENAME-9 (-> obj twister) 3 9 910.2222) (set! (-> obj head-tilt) 0.0) - (set! - (-> obj skel prebind-function) - (the-as - (function pointer int process-drawable none) - lurkerworm-prebind-function - ) - ) - (set! - (-> obj skel postbind-function) - (the-as - (function pointer int process-drawable none) - lurkerworm-joint-callback - ) - ) + (set! (-> obj skel prebind-function) + (the-as (function pointer int process-drawable none) lurkerworm-prebind-function) + ) + (set! (-> obj skel postbind-function) lurkerworm-joint-callback) (set! (-> obj root-override nav-radius) 12288.0) (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) (go lurkerworm-idle) diff --git a/goal_src/levels/citadel/citadel-obs.gc b/goal_src/levels/citadel/citadel-obs.gc index c11759cc8c..859dea4c90 100644 --- a/goal_src/levels/citadel/citadel-obs.gc +++ b/goal_src/levels/citadel/citadel-obs.gc @@ -129,39 +129,36 @@ :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 - ) + (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) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) + ) + (suspend) + ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior citb-arm-section) ja-post) ) @@ -176,16 +173,16 @@ (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)) + ((> (-> 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)) @@ -193,10 +190,7 @@ (none) ) -(defmethod - init-from-entity! - citb-arm-section - ((obj citb-arm-section) (arg0 entity-actor)) +(defmethod init-from-entity! citb-arm-section ((obj citb-arm-section) (arg0 entity-actor)) (init-root! obj) (process-drawable-from-entity! obj arg0) (setup-new-process! obj) @@ -220,62 +214,42 @@ (the-as (function none :behavior citb-arm) rider-trans) :post (behavior () - (if (logtest? (-> self draw status) 2) - (clear-collide-with-as (-> self root-override)) - (restore-collide-with-as (-> self root-override)) + (if (logtest? (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self root-override)) + (restore-collide-with-as (-> self root-override)) + ) + (rider-post) + (none) ) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) (defmethod setup-new-process! citb-arm ((obj citb-arm)) - ((the-as (function citb-arm-section none) (find-parent-method citb-arm 21)) - obj - ) + ((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)) @@ -293,12 +267,7 @@ (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 - ) + ((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)) @@ -394,18 +363,14 @@ (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) - ) + ((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) - ) + ((the-as (function citb-arm none) (find-parent-method citb-arm-shoulder-b 21)) (the-as citb-arm obj)) 0 (none) ) @@ -461,74 +426,56 @@ (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 - ) - ) + (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) + (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) ) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 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) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -544,33 +491,31 @@ (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)) + ((> (-> 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) - ) - ) + (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) @@ -654,31 +599,20 @@ ) (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) - ) + (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) + (set-root-prim! s5-0 s4-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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -712,43 +646,25 @@ (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (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) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) (the-as collide-shape-moving 0) ) @@ -757,41 +673,29 @@ (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 - (+ - (-> + ((-> 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)) - data - 0 - length + num-func-identity ) - -1 - ) + (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 + (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! (-> s5-1 frame-num) 0.0) - ) ) - ) (set! (-> obj anim-speed) 2.0) (set! (-> obj timeout) 1.0) (dummy-47 (-> obj root-override)) @@ -813,18 +717,14 @@ :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)) - ) + (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) ) - (send-event - (ppointer->process (-> self launcher)) - 'trans - (-> self basetrans) - ) - (none) - ) ) (defskelgroup *citb-launcher-sg* citb-launcher @@ -840,47 +740,23 @@ ) (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)) + (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 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 @@ -973,405 +849,283 @@ (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) + (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! 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) - ) + (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)) + ) ) ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - ) - (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) + (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) ) - (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) - ) + (behavior () (dummy-18 self) (deactivate self) (none)) ) -(defmethod - init-from-entity! - citb-robotboss - ((obj citb-robotboss) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) +(defmethod init-from-entity! citb-robotboss ((obj citb-robotboss) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *citb-robotboss-sg* '()) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 601) obj) - ) + (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) - ) + (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) ) @@ -1395,140 +1149,96 @@ (defmethod relocate citb-coil ((obj citb-coil) (arg0 int)) (if (nonzero? (-> obj part-off)) - (&+! (-> obj part-off) arg0) - ) + (&+! (-> 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)) - ) + (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) - ) - ) - ) + (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) - ) + (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!) + ) + ) ) - (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) ) - (none) - ) :post - (behavior () - (spawn (-> self part) (-> self root trans)) - (ja-post) - (none) - ) + (behavior () (spawn (-> self part) (-> self root trans)) (ja-post) (none)) ) (defstate citb-coil-break (citb-coil) :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 + (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!) ) - -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! - ) + (go citb-coil-broken) + (none) ) - (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) ) @@ -1536,55 +1246,29 @@ (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 + (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!) ) - -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)) + (while #t + (spawn (-> self part-off) (-> self root trans)) + (suspend) ) - (set! (-> a0-1 param 1) 1.0) - (joint-control-channel-group-eval! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) + (none) ) - (while #t - (spawn (-> self part-off) (-> self root trans)) - (suspend) - ) - (none) - ) :post (the-as (function none :behavior citb-coil) ja-post) ) @@ -1593,24 +1277,17 @@ (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)) + (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) + ) ) - (if (logtest? (-> v1-9 extra perm status) (entity-perm-status complete)) - (go citb-coil-broken) - (go citb-coil-idle) - ) - ) (none) ) @@ -1631,17 +1308,15 @@ ) -(defbehavior - citb-hose-event-handler citb-hose - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('spawn) +(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) + (('trigger) + (go citb-hose-die) + ) ) - ) ) (defstate citb-hose-idle (citb-hose) @@ -1649,53 +1324,27 @@ 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 + (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!) + ) ) - ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior citb-hose) ja-post) ) @@ -1705,53 +1354,27 @@ 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 + (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!) ) - -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! - ) + (go citb-hose-idle) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go citb-hose-idle) - (none) - ) :post (the-as (function none :behavior citb-hose) ja-post) ) @@ -1761,54 +1384,28 @@ 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 + (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!) ) - -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! - ) + (anim-loop) + (none) ) - (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) ) @@ -1817,16 +1414,15 @@ (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)) + (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) + ) ) - (if (logtest? (-> v1-3 extra perm status) (entity-perm-status complete)) - (go citb-hose-die) - (go citb-hose-idle) - ) - ) (none) ) @@ -1878,92 +1474,96 @@ (defmethod relocate citb-generator ((obj citb-generator) (arg0 int)) (if (nonzero? (-> obj part-broken)) - (&+! (-> obj part-broken) arg0) - ) + (&+! (-> obj part-broken) arg0) + ) (if (nonzero? (-> obj part-mushroom)) - (&+! (-> obj part-mushroom) arg0) - ) + (&+! (-> 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)) - ) + (kill-and-free-particles (-> obj part-broken)) + ) (if (nonzero? (-> obj part-mushroom)) - (kill-and-free-particles (-> 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 + (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) ) - ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event (if s4-0 - (-> s4-0 extra process) - ) - 'trigger + '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)) + (while (< (- (-> *display* base-frame-counter) gp-1) 150) + (if (movie?) + (set! gp-1 (-> *display* base-frame-counter)) ) - (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 - ) - ) + (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) ) @@ -1971,74 +1571,56 @@ (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) - ) + (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 ) - (go citb-generator-break) ) - (('trigger) - #t - ) ) - ) :exit - (behavior () - (stop! (-> self sound)) - (none) - ) + (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) + (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) ) - (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) ) - (none) - ) :post (the-as (function none :behavior citb-generator) ja-post) ) @@ -2046,71 +1628,60 @@ (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 - ) + (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)) ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event (if s4-0 - (-> s4-0 extra process) - ) - 'open - ) + (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) - ) + (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) + ) ) - (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) ) - (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) ) @@ -2118,149 +1689,116 @@ (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) + (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) + ) ) - (citb-generator-trigger-others) + (else + (citb-generator-trigger-others) + ) ) - ) - (else - (citb-generator-trigger-others) - ) + (anim-loop) + (none) ) - (anim-loop) - (none) - ) :post - (behavior () - (spawn (-> self part-broken) (-> self root-override trans)) - (ja-post) - (none) - ) + (behavior () (spawn (-> self part-broken) (-> self root-override trans)) (ja-post) (none)) ) (defmethod init! citb-generator ((obj citb-generator)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (set-root-prim! s5-0 s4-0) + (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) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) (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) - ) + (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 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) - ) + (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))) + ) ) - (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) - ) - ) + (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 - init-from-entity! - citb-generator - ((obj citb-generator) (arg0 entity-actor)) +(defmethod init-from-entity! citb-generator ((obj citb-generator) (arg0 entity-actor)) (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)) + (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) + ) ) - (if (logtest? (-> v1-4 extra perm status) (entity-perm-status complete)) - (go citb-generator-broken) - (go citb-generator-idle) - ) - ) (none) ) @@ -2284,101 +1822,93 @@ (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) + (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) - ) + (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 - ) + (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)) ) - (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) - ) - ) - ) + (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 + ) + ) + ) ) - (while (handle->process (the-as handle gp-2)) - (suspend) - ) + ) + ) + (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) ) - (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 init-from-entity! citadelcam ((obj citadelcam) (arg0 entity-actor)) @@ -2402,87 +1932,61 @@ :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)) + (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) ) - (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) - ) + (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) ) - (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 - ) + (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)) + ) ) - ) - (if t9-2 - ((the-as (function none :behavior battlecontroller) t9-2)) - ) + (none) ) - (none) - ) ) (defmethod TODO-RENAME-27 citb-battlecontroller ((obj citb-battlecontroller)) - ((the-as - (function battlecontroller none) - (find-parent-method citb-battlecontroller 27) - ) - obj - ) + ((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 524bb1e5eb..76e8f59dc4 100644 --- a/goal_src/levels/citadel/citb-drop-plat-CIT.gc +++ b/goal_src/levels/citadel/citb-drop-plat-CIT.gc @@ -81,359 +81,243 @@ (defstate drop-plat-idle (drop-plat) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('drop) - (logclear! (-> self mask) (process-mask actor-pause)) - (go drop-plat-drop) + (case arg2 + (('drop) + (logclear! (-> self mask) (process-mask actor-pause)) + (go drop-plat-drop) + ) + (('touch 'attack) + (send-event *target* 'no-look-around 300) + (send-event (ppointer->process (-> self parent)) 'player-stepped (-> self color)) + #f + ) ) - (('touch 'attack) - (send-event *target* 'no-look-around 300) - (send-event - (ppointer->process (-> self parent)) - 'player-stepped - (-> self color) - ) - #f - ) ) - ) :code (behavior () - (suspend) - (dummy-47 (-> self root-override)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (logior! (-> self mask) (process-mask actor-pause)) - (while #t - (if - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (-> self duration) - ) - (go drop-plat-drop) - ) (suspend) + (dummy-47 (-> self root-override)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logior! (-> self mask) (process-mask actor-pause)) + (while #t + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self duration)) + (go drop-plat-drop) + ) + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior drop-plat) ja-post) ) (defbehavior drop-plat-set-fade drop-plat () - (let - ((f0-1 - (fmin - 1.0 - (* - 0.000012207031 - (- - (-> self root-override trans y) - (+ - -204800.0 - (-> (the-as process-drawable (-> self parent 0)) root trans y) - ) + (let ((f0-1 + (fmin 1.0 (* 0.000012207031 (- (-> self root-override trans y) + (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) + ) + ) + ) + ) ) - ) - ) - ) + (set-vector! (-> self draw color-mult) f0-1 f0-1 f0-1 1.0) ) - (set-vector! (-> self draw color-mult) f0-1 f0-1 f0-1 1.0) - ) 0 (none) ) (defstate drop-plat-spawn (drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('drop) - (go drop-plat-die) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('drop) + (go drop-plat-die) + ) + ) + ) :code (behavior () - (set! - (-> self root-override trans y) - (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) - ) - (logior! (-> self draw status) 2) - (ja-post) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while #t - (when - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (-> self delay) + (set! (-> self root-override trans y) + (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) + ) + (logior! (-> self draw status) (draw-status drwf01)) + (ja-post) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) + (let ((v1-14 (logclear (-> self draw status) (draw-status drwf01))) + (a0-5 (-> self draw)) + ) + (set! (-> a0-5 status) v1-14) + (go drop-plat-rise a0-5) + ) + ) + (suspend) ) - (let ((v1-14 (logand -3 (-> self draw status))) - (a0-5 (-> self draw)) - ) - (set! (-> a0-5 status) v1-14) - (go drop-plat-rise a0-5) - ) - ) - (suspend) + (none) ) - (none) - ) ) (defstate drop-plat-rise (drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('drop) - (go drop-plat-drop) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('drop) + (go drop-plat-drop) + ) + ) + ) :code (behavior ((arg0 draw-control)) - (set! (-> self interp) 1.0) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self spin-angle) 0.0) - (set! - (-> self root-override trans y) - (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) - ) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 #f) - ) - (set! (-> gp-0 quad) (-> self root-override trans quad)) - (set! - (-> gp-0 y) - (-> (the-as process-drawable (-> self parent 0)) root trans y) - ) - (while #t - (let - ((f0-6 - (fmax - 0.0 - (- - 1.0 - (* - 0.0033333334 - (the - float - (- (-> *display* base-frame-counter) (-> self state-time)) - ) - ) + (set! (-> self interp) 1.0) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self spin-angle) 0.0) + (set! (-> self root-override trans y) + (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) ) - ) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 #f) + ) + (set! (-> gp-0 quad) (-> self root-override trans quad)) + (set! (-> gp-0 y) (-> (the-as process-drawable (-> self parent 0)) root trans y)) + (while #t + (let ((f0-6 + (fmax 0.0 (- 1.0 (* 0.0033333334 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + ) + ) + (set! (-> self interp) (* f0-6 f0-6)) + ) + (set! (-> self root-override trans y) + (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (* 204800.0 (-> self interp))) + ) + (when (and (not s5-0) (< (-> self interp) 0.05)) + (set! s5-0 #t) + (sound-play-by-name (static-sound-name "bridge-piece-up") (new-sound-id) 1024 0 0 1 (the-as symbol gp-0)) + ) + (set! (-> self spin-angle) (* 10.0 (-> self spin-speed) (-> self interp))) + (if (= (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root-override trans y)) + (go drop-plat-idle) + ) + (suspend) ) - ) - (set! (-> self interp) (* f0-6 f0-6)) ) - (set! - (-> self root-override trans y) - (- - (-> (the-as process-drawable (-> self parent 0)) root trans y) - (* 204800.0 (-> self interp)) - ) - ) - (when (and (not s5-0) (< (-> self interp) 0.05)) - (set! s5-0 #t) - (sound-play-by-name - (static-sound-name "bridge-piece-up") - (new-sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol gp-0) - ) - ) - (set! (-> self spin-angle) (* 10.0 (-> self spin-speed) (-> self interp))) - (if - (= - (-> (the-as process-drawable (-> self parent 0)) root trans y) - (-> self root-override trans y) - ) - (go drop-plat-idle) - ) - (suspend) - ) + (none) ) - (none) - ) :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) - (quaternion*! - (-> self root-override quat) - (-> (the-as process-drawable (-> self parent 0)) root quat) - gp-0 - ) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) + (quaternion*! (-> self root-override quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0) + ) + (drop-plat-set-fade) + (transform-post) + (none) ) - (drop-plat-set-fade) - (transform-post) - (none) - ) ) (defstate drop-plat-drop (drop-plat) :code (behavior () - (when - (= - (-> (the-as process-drawable (-> self parent 0)) root trans y) - (-> self root-override trans y) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (sound-play-by-name - (static-sound-name "bridge-piece-dn") - (new-sound-id) - 1024 - 0 - 0 - 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) - (set! - (-> self interp) - (/ - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - (the float gp-1) + (when (= (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root-override trans y)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play-by-name (static-sound-name "bridge-piece-dn") (new-sound-id) 1024 0 0 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) + (set! (-> self interp) + (/ (the float (- (-> *display* base-frame-counter) (-> self state-time))) (the float gp-1)) + ) + (set! (-> self spin-angle) (* 910.2222 (sin (* 196608.0 (-> self interp))))) + (suspend) + ) ) - ) - (set! - (-> self spin-angle) - (* 910.2222 (sin (* 196608.0 (-> self interp)))) - ) + ) + (while #t + (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 0.0)) + (vector-v++! (-> self root-override trans) (-> self root-override transv)) + (if (< 204800.0 + (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root-override trans y)) + ) + (go drop-plat-die) + ) + (+! (-> self spin-angle) (* (-> self spin-speed) (-> *display* seconds-per-frame))) (suspend) ) - ) + (none) ) - (while #t - (vector-v++! - (-> self root-override transv) - (dummy-62 (-> self root-override) (new-stack-vector0) 0.0) - ) - (vector-v++! (-> self root-override trans) (-> self root-override transv)) - (if - (< - 204800.0 - (- - (-> (the-as process-drawable (-> self parent 0)) root trans y) - (-> self root-override trans y) - ) - ) - (go drop-plat-die) - ) - (+! - (-> self spin-angle) - (* (-> self spin-speed) (-> *display* seconds-per-frame)) - ) - (suspend) - ) - (none) - ) :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) - (quaternion*! - (-> self root-override quat) - (-> (the-as process-drawable (-> self parent 0)) root quat) - gp-0 - ) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) + (quaternion*! (-> self root-override quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0) + ) + (drop-plat-set-fade) + (transform-post) + (none) ) - (drop-plat-set-fade) - (transform-post) - (none) - ) ) (defstate drop-plat-die (drop-plat) :code - (behavior () - (dummy-18 self) - (none) - ) + (behavior () (dummy-18 self) (none)) ) (defmethod TODO-RENAME-20 drop-plat ((obj drop-plat)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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 12288.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) (defmethod dummy-21 drop-plat ((obj drop-plat)) - (case (-> obj color) - ((1) + (case (-> obj color) + ((1) (initialize-skeleton obj *citb-drop-plat-red-sg* '()) ) - ((2) - (initialize-skeleton obj *citb-drop-plat-green-sg* '()) + ((2) + (initialize-skeleton obj *citb-drop-plat-green-sg* '()) + ) + ((3) + (initialize-skeleton obj *citb-drop-plat-blue-sg* '()) + ) + ((4) + (initialize-skeleton obj *citb-drop-plat-yellow-sg* '()) + ) + (else + (initialize-skeleton obj *citb-drop-plat-sg* '()) + ) ) - ((3) - (initialize-skeleton obj *citb-drop-plat-blue-sg* '()) - ) - ((4) - (initialize-skeleton obj *citb-drop-plat-yellow-sg* '()) - ) - (else - (initialize-skeleton obj *citb-drop-plat-sg* '()) - ) - ) (logclear! (-> obj mask) (process-mask actor-pause)) (let ((s3-0 (new 'stack-no-clear 'vector)) (s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) ) - (set! (-> s3-0 x) (* 65536.0 (rand-vu))) - (let ((f30-1 14563.556) - (f0-2 (rand-vu-float-range -1.0 1.0)) - ) - (set! (-> s3-0 y) (* f30-1 (* f0-2 f0-2))) + (set! (-> s3-0 x) (* 65536.0 (rand-vu))) + (let ((f30-1 14563.556) + (f0-2 (rand-vu-float-range -1.0 1.0)) + ) + (set! (-> s3-0 y) (* f30-1 (* f0-2 f0-2))) + ) + (vector-sincos! s5-0 s4-0 s3-0) + (set! (-> obj spin-axis x) (* (-> s4-0 y) (-> s4-0 x))) + (set! (-> obj spin-axis y) (-> s5-0 y)) + (set! (-> obj spin-axis z) (* (-> s4-0 y) (-> s5-0 x))) ) - (vector-sincos! s5-0 s4-0 s3-0) - (set! (-> obj spin-axis x) (* (-> s4-0 y) (-> s4-0 x))) - (set! (-> obj spin-axis y) (-> s5-0 y)) - (set! (-> obj spin-axis z) (* (-> s4-0 y) (-> s5-0 x))) - ) (set! (-> obj spin-axis w) 1.0) (set! (-> obj spin-angle) 0.0) (set! (-> obj spin-speed) (* 8192.0 (+ 1.0 (rand-vu)))) @@ -441,19 +325,14 @@ (none) ) -(defbehavior - drop-plat-init-by-other drop-plat - ((arg0 vector) (arg1 int) (arg2 int) (arg3 int)) +(defbehavior drop-plat-init-by-other drop-plat ((arg0 vector) (arg1 int) (arg2 int) (arg3 int)) (set! (-> self color) arg3) (set! (-> self delay) arg1) (set! (-> self duration) arg2) (TODO-RENAME-20 self) (set! (-> self root-override trans quad) (-> arg0 quad)) (vector-identity! (-> self root-override scale)) - (quaternion-copy! - (-> self root-override quat) - (-> (the-as process-drawable (-> self parent 0)) root quat) - ) + (quaternion-copy! (-> self root-override quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) (dummy-21 self) (go drop-plat-spawn) (none) @@ -494,131 +373,73 @@ (defmethod relocate citb-drop-plat ((obj citb-drop-plat) (arg0 int)) (if (nonzero? (-> obj child-array)) - (&+! (-> obj child-array) arg0) - ) + (&+! (-> obj child-array) arg0) + ) (the-as citb-drop-plat ((method-of-type process-drawable relocate) obj arg0)) ) (defbehavior citb-drop-plat-spawn-children citb-drop-plat () (local-vars (s0-0 int) (sv-48 process) (sv-64 int)) (let ((gp-0 (new 'stack-no-clear 'vector))) - 6 - 0 - (let ((s5-0 0) - (s4-0 1) - ) - (when - (< - 0.0 - (vector-dot - (vector-! - (new 'stack-no-clear 'vector) - (target-pos 0) - (-> self root trans) + 6 + 0 + (let ((s5-0 0) + (s4-0 1) + ) + (when (< 0.0 + (vector-dot (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans)) (-> self z-dir)) + ) + (set! s5-0 (+ (-> self z-count) -1)) + (set! s4-0 -1) + ) + (dotimes (s3-2 (-> self z-count)) + (dotimes (s2-0 (-> self x-count)) + (let ((s1-0 (+ s2-0 (* s5-0 (-> self x-count))))) + (set! (-> gp-0 quad) (-> self origin quad)) + (vector+*! gp-0 gp-0 (-> self x-dir) (* (-> self x-spacing) (the float s2-0))) + (vector+*! gp-0 gp-0 (-> self z-dir) (* (-> self z-spacing) (the float s5-0))) + (if (-> self child-color-array) + (set! s0-0 (-> self child-color-array s1-0)) + (set! s0-0 (rand-vu-int-range 0 5)) + ) + (when (nonzero? s0-0) + (set! sv-64 (the int (* 150.0 (rand-vu)))) + (set! sv-48 (get-process *default-dead-pool* drop-plat #x4000)) + (set! (-> self child-array data s1-0) + (ppointer->handle (when sv-48 + (let ((t9-6 (method-of-type drop-plat activate))) + (t9-6 (the-as drop-plat sv-48) self 'drop-plat (the-as pointer #x70004000)) + ) + (let ((t9-7 run-function-in-process) + (a0-8 sv-48) + (a1-5 drop-plat-init-by-other) + (a2-4 gp-0) + (t0-0 (-> self duration)) + ) + ((the-as (function process function vector uint uint int) t9-7) + a0-8 + a1-5 + a2-4 + (the-as uint sv-64) + (the-as uint t0-0) + ) + ) + (-> sv-48 ppointer) + ) + ) + ) + ) + ) + ) + (let ((s2-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s2-1) 36) + (suspend) + ) + ) + (+! s5-0 s4-0) ) - (-> self z-dir) - ) ) - (set! s5-0 (+ (-> self z-count) -1)) - (set! s4-0 -1) - ) - (dotimes (s3-2 (-> self z-count)) - (dotimes (s2-0 (-> self x-count)) - (let ((s1-0 (+ s2-0 (* s5-0 (-> self x-count))))) - (set! (-> gp-0 quad) (-> self origin quad)) - (vector+*! - gp-0 - gp-0 - (-> self x-dir) - (* (-> self x-spacing) (the float s2-0)) - ) - (vector+*! - gp-0 - gp-0 - (-> self z-dir) - (* (-> self z-spacing) (the float s5-0)) - ) - (if (-> self child-color-array) - (set! s0-0 (-> self child-color-array s1-0)) - (set! s0-0 (rand-vu-int-range 0 5)) - ) - (when (nonzero? s0-0) - (set! sv-64 (the int (* 150.0 (rand-vu)))) - (set! sv-48 (get-process *default-dead-pool* drop-plat #x4000)) - (set! (-> self child-array data s1-0) (ppointer->handle (when sv-48 - (let - ((t9-6 - (method-of-type - drop-plat - activate - ) - ) - ) - (t9-6 - (the-as - drop-plat - sv-48 - ) - self - 'drop-plat - (the-as - pointer - #x70004000 - ) - ) - ) - (let - ((t9-7 - run-function-in-process - ) - (a0-8 sv-48) - (a1-5 - drop-plat-init-by-other - ) - (a2-4 gp-0) - (t0-0 - (-> - self - duration - ) - ) - ) - ((the-as - (function process function vector uint uint int) - t9-7 - ) - a0-8 - a1-5 - a2-4 - (the-as - uint - sv-64 - ) - (the-as - uint - t0-0 - ) - ) - ) - (-> - sv-48 - ppointer - ) - ) - ) - ) - ) - ) - ) - (let ((s2-1 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) s2-1) 36) - (suspend) - ) - ) - (+! s5-0 s4-0) - ) ) - ) (set! (-> self drop-time) (-> *display* base-frame-counter)) 0 (none) @@ -626,161 +447,121 @@ (defbehavior citb-drop-plat-drop-all-children citb-drop-plat () (dotimes (gp-0 (-> self child-count)) - (send-event (handle->process (-> self child-array data gp-0)) 'drop) - (set! (-> self child-array data gp-0) (the-as handle #f)) - ) + (send-event (handle->process (-> self child-array data gp-0)) 'drop) + (set! (-> self child-array data gp-0) (the-as handle #f)) + ) #f ) (defbehavior citb-drop-plat-drop-children citb-drop-plat ((arg0 int)) (cond - ((= arg0 6) - ) - (else - (dotimes (s5-0 (-> self child-count)) - (let ((a0-3 (handle->process (-> self child-array data s5-0)))) - (when - (and - a0-3 - (!= (-> (the-as drop-plat a0-3) color) 6) - (= arg0 (-> (the-as drop-plat a0-3) color)) - ) - (send-event a0-3 'drop) - (set! (-> self child-array data s5-0) (the-as handle #f)) - ) - ) + ((= arg0 6) ) + (else + (dotimes (s5-0 (-> self child-count)) + (let ((a0-3 (handle->process (-> self child-array data s5-0)))) + (when (and a0-3 (!= (-> (the-as drop-plat a0-3) color) 6) (= arg0 (-> (the-as drop-plat a0-3) color))) + (send-event a0-3 'drop) + (set! (-> self child-array data s5-0) (the-as handle #f)) + ) + ) + ) + ) ) - ) 0 (none) ) (defstate citb-drop-plat-idle (citb-drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (go citb-drop-plat-active) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('trigger) + (go citb-drop-plat-active) + ) + ) + ) :code (behavior () - (citb-drop-plat-drop-all-children) - (while #t - (suspend) + (citb-drop-plat-drop-all-children) + (while #t + (suspend) + ) + (none) ) - (none) - ) ) (defstate citb-drop-plat-active (citb-drop-plat) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'player-stepped) - (when - (>= - (- (-> *display* base-frame-counter) (-> self drop-time)) - 60 + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'player-stepped) + (when (>= (- (-> *display* base-frame-counter) (-> self drop-time)) 60) + (set! (-> self drop-time) (-> *display* base-frame-counter)) + (citb-drop-plat-drop-children (the-as int (-> arg3 param 0))) + ) + ) + ((= v1-0 'trigger) + (go citb-drop-plat-idle) + ) ) - (set! - (-> self drop-time) - (-> *display* base-frame-counter) - ) - (citb-drop-plat-drop-children - (the-as int (-> arg3 param 0)) - ) - ) - ) - ((= v1-0 'trigger) - (go citb-drop-plat-idle) - ) - ) - ) + ) + ) ) - ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (citb-drop-plat-spawn-children) - (while #t - (if - (or - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (+ (-> self duration) 600) - ) - (or - (not *target*) - (< - (-> self idle-distance) - (vector-vector-distance - (-> self root trans) - (-> *target* control trans) - ) - ) - ) - (not (-> self child)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (citb-drop-plat-spawn-children) + (while #t + (if (or + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (+ (-> self duration) 600)) + (or + (not *target*) + (< (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) + ) + (not (-> self child)) + ) + (go citb-drop-plat-idle) + ) + (suspend) ) - (go citb-drop-plat-idle) - ) - (suspend) + (none) ) - (none) - ) ) -(defmethod - init-from-entity! - citb-drop-plat - ((obj citb-drop-plat) (arg0 entity-actor)) +(defmethod init-from-entity! citb-drop-plat ((obj citb-drop-plat) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (let ((v1-2 (res-lump-data arg0 'count pointer))) - (when v1-2 - (set! (-> obj x-count) (-> (the-as (pointer int32) v1-2) 0)) - (set! (-> obj z-count) (-> (the-as (pointer int32) v1-2) 1)) + (when v1-2 + (set! (-> obj x-count) (-> (the-as (pointer int32) v1-2) 0)) + (set! (-> obj z-count) (-> (the-as (pointer int32) v1-2) 1)) + ) ) - ) (set! (-> obj child-count) (* (-> obj x-count) (-> obj z-count))) - (set! - (-> obj child-color-array) - (res-lump-data arg0 'plat-type (pointer int8)) - ) + (set! (-> obj child-color-array) (res-lump-data arg0 'plat-type (pointer int8))) (when (> (-> obj child-count) 0) - (set! - (-> obj child-array) - (new 'process 'handle-inline-array (-> obj child-count)) + (set! (-> obj child-array) (new 'process 'handle-inline-array (-> obj child-count))) + (dotimes (v1-9 (-> obj child-count)) + (set! (-> obj child-array data v1-9) (the-as handle #f)) + ) ) - (dotimes (v1-9 (-> obj child-count)) - (set! (-> obj child-array data v1-9) (the-as handle #f)) - ) - ) (set! (-> obj x-spacing) 16384.0) (set! (-> obj z-spacing) 16384.0) - (set! - (-> obj idle-distance) - (+ 40960.0 (* 0.5 (the float (-> obj z-count)) (-> obj z-spacing))) - ) - (set! - (-> obj duration) - (the int (* 300.0 (+ 2.0 (the float (-> obj z-count))))) - ) + (set! (-> obj idle-distance) (+ 40960.0 (* 0.5 (the float (-> obj z-count)) (-> obj z-spacing)))) + (set! (-> obj duration) (the int (* 300.0 (+ 2.0 (the float (-> obj z-count)))))) (let ((f0-7 (res-lump-float arg0 'rotoffset))) - (quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-7) - ) + (quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-7) + ) (vector-x-quaternion! (-> obj x-dir) (-> obj root quat)) (vector-z-quaternion! (-> obj z-dir) (-> obj root quat)) (set! (-> obj origin quad) (-> obj root trans quad)) (let ((f0-10 (* -0.5 (the float (+ (-> obj x-count) -1)) (-> obj x-spacing))) (f30-0 (* -0.5 (the float (+ (-> obj z-count) -1)) (-> obj z-spacing))) ) - (vector+*! (-> obj origin) (-> obj origin) (-> obj x-dir) f0-10) - (vector+*! (-> obj origin) (-> obj origin) (-> obj z-dir) f30-0) - ) + (vector+*! (-> obj origin) (-> obj origin) (-> obj x-dir) f0-10) + (vector+*! (-> obj origin) (-> obj origin) (-> obj z-dir) f30-0) + ) (go citb-drop-plat-idle) (none) ) diff --git a/goal_src/levels/citadel/citb-plat.gc b/goal_src/levels/citadel/citb-plat.gc index fcb3ca61c0..493a35dcd3 100644 --- a/goal_src/levels/citadel/citb-plat.gc +++ b/goal_src/levels/citadel/citb-plat.gc @@ -83,21 +83,14 @@ :virtual #t :trans (behavior () - (if - (and - *target* - (>= - (-> self idle-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (go-virtual citb-base-plat-active) + (if (and *target* (>= (-> self idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (go-virtual citb-base-plat-active) + ) + (none) ) - (none) - ) :code (the-as (function none :behavior citb-base-plat) anim-loop) :post @@ -108,22 +101,15 @@ :virtual #t :trans (behavior () - (if - (or - (not *target*) - (< - (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (go-virtual citb-base-plat-idle) + (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (go-virtual citb-base-plat-idle) + ) + (rider-trans) + (none) ) - (rider-trans) - (none) - ) :code (the-as (function none :behavior citb-base-plat) anim-loop) :post @@ -131,44 +117,26 @@ ) (defmethod dummy-21 citb-base-plat ((obj citb-base-plat)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -185,10 +153,7 @@ (none) ) -(defmethod - init-from-entity! - citb-base-plat - ((obj citb-base-plat) (arg0 entity-actor)) +(defmethod init-from-entity! citb-base-plat ((obj citb-base-plat) (arg0 entity-actor)) (dummy-21 obj) (process-drawable-from-entity! obj arg0) (set! (-> obj idle-distance) 245760.0) @@ -208,44 +173,26 @@ (defmethod dummy-24 citb-plat-eco ((obj citb-plat-eco)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -278,38 +225,27 @@ :virtual #t :trans (behavior () - (set! - (-> self path-pos) - (if (logtest? (-> self fact options) (fact-options fop3)) - (get-current-phase (-> self sync)) - (get-current-phase-with-mirror (-> self sync)) - ) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (get-current-phase (-> self sync)) + (get-current-phase-with-mirror (-> self sync)) + ) + ) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (vector+! (-> self basetrans) (-> self basetrans) (-> self trans-offset)) + (if (< (vector-vector-distance (-> self root-override trans) (ear-trans)) 81920.0) + (sound-play-by-name + (static-sound-name "eco-plat-hover") + (-> self sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + ) + (plat-trans) + (none) ) - (eval-path-curve! - (-> self path) - (-> self basetrans) - (-> self path-pos) - 'interp - ) - (vector+! (-> self basetrans) (-> self basetrans) (-> self trans-offset)) - (if - (< - (vector-vector-distance (-> self root-override trans) (ear-trans)) - 81920.0 - ) - (sound-play-by-name - (static-sound-name "eco-plat-hover") - (-> self sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self root-override trans)) - ) - ) - (plat-trans) - (none) - ) ) (defmethod get-unlit-skel citb-plat ((obj citb-plat)) @@ -317,79 +253,52 @@ ) (defmethod dummy-24 citb-plat ((obj citb-plat)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) (defmethod dummy-26 citb-plat ((obj citb-plat)) (logclear! (-> obj mask) (process-mask actor-pause)) - (set! - (-> obj root-override scale quad) - (-> (res-lump-struct (-> obj entity) 'scale vector) quad) - ) + (set! (-> obj root-override scale quad) (-> (res-lump-struct (-> obj entity) 'scale vector) quad)) (let ((f0-0 (-> obj root-override scale x))) - (set! - (-> obj root-override root-prim local-sphere w) - (* (-> obj root-override root-prim local-sphere w) f0-0) + (set! (-> obj root-override root-prim local-sphere w) + (* (-> obj root-override root-prim local-sphere w) f0-0) + ) + (set! (-> obj draw bounds w) (* (-> obj draw bounds w) f0-0)) ) - (set! (-> obj draw bounds w) (* (-> obj draw bounds w) f0-0)) - ) - (set! - (-> obj trans-offset quad) - (-> - (the-as - vector - ((method-of-type res-lump get-property-struct) - (-> obj entity) - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) + (set! (-> obj trans-offset quad) (-> (the-as vector ((method-of-type res-lump get-property-struct) + (-> obj entity) + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + quad + ) + ) 0 (none) ) @@ -411,78 +320,51 @@ :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) - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v0-0 #t)) - (set! (-> self rise) v0-0) - v0-0 - ) - ) - ) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'trigger) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v0-0 #t)) + (set! (-> self rise) v0-0) + v0-0 + ) + ) + ) + ) ) - ) :trans (the-as (function none :behavior citb-stair-plat) #f) :code (behavior () - (logior! (-> self draw status) 2) - (while (not (-> self rise)) - (suspend) - ) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while - (< - (- (-> *display* base-frame-counter) (-> self state-time)) - (the-as int (-> self delay)) - ) - (ja-post) - (suspend) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while #t - (let - ((f30-0 - (- - 1.0 - (* - 0.0011111111 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - ) + (logior! (-> self draw status) (draw-status drwf01)) + (while (not (-> self rise)) + (suspend) + ) + (logclear! (-> self draw status) (draw-status drwf01)) + (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while (< (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self delay))) + (ja-post) + (suspend) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (let ((f30-0 (- 1.0 (* 0.0011111111 (the float (- (-> *display* base-frame-counter) (-> self state-time))))))) + (when (< f30-0 0.0) + (set! (-> self root-override trans y) (-> self rise-height)) + (go-virtual citb-base-plat-active) + ) + (set! (-> self root-override trans y) (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0))) ) - ) - ) - (when (< f30-0 0.0) - (set! (-> self root-override trans y) (-> self rise-height)) - (go-virtual citb-base-plat-active) - ) - (set! - (-> self root-override trans y) - (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0)) - ) - ) - (let - ((f0-12 - (fmax - 0.0 - (fmin - 1.0 - (* 0.000012207031 (+ 409600.0 (-> self root-override trans y))) - ) + (let ((f0-12 (fmax 0.0 (fmin 1.0 (* 0.000012207031 (+ 409600.0 (-> self root-override trans y))))))) + (set! (-> self draw color-mult x) f0-12) + (set! (-> self draw color-mult y) f0-12) + (set! (-> self draw color-mult z) f0-12) ) - ) + (transform-post) + (suspend) ) - (set! (-> self draw color-mult x) f0-12) - (set! (-> self draw color-mult y) f0-12) - (set! (-> self draw color-mult z) f0-12) - ) - (transform-post) - (suspend) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-stair-plat) #f) ) @@ -493,13 +375,13 @@ (the-as (function none :behavior citb-stair-plat) #f) :code (behavior () - (set! (-> self root-override trans y) (-> self rise-height)) - (suspend) - (dummy-47 (-> self root-override)) - (logior! (-> self mask) (process-mask actor-pause)) - (anim-loop) - (none) - ) + (set! (-> self root-override trans y) (-> self rise-height)) + (suspend) + (dummy-47 (-> self root-override)) + (logior! (-> self mask) (process-mask actor-pause)) + (anim-loop) + (none) + ) :post (the-as (function none :behavior citb-stair-plat) ja-post) ) @@ -510,66 +392,56 @@ (set! (-> obj idle-height) (+ -409600.0 (-> obj rise-height))) (set! (-> obj root-override trans y) (-> obj idle-height)) (set! (-> obj rise) #f) - (set! - (-> obj delay) - (the-as - uint - (the int (* 300.0 (res-lump-float (-> obj entity) 'delay :default 1.0))) - ) - ) + (set! (-> obj delay) (the-as uint (the int (* 300.0 (res-lump-float (-> obj entity) 'delay :default 1.0))))) (let ((f0-7 1.5)) - (set-vector! (-> obj root-override scale) f0-7 f0-7 f0-7 1.0) - (set! - (-> obj root-override root-prim local-sphere w) - (* (-> obj root-override root-prim local-sphere w) f0-7) + (set-vector! (-> obj root-override scale) f0-7 f0-7 f0-7 1.0) + (set! (-> obj root-override root-prim local-sphere w) + (* (-> obj root-override root-prim local-sphere w) f0-7) + ) + (set! (-> obj draw bounds w) (* (-> obj draw bounds w) f0-7)) ) - (set! (-> obj draw bounds w) (* (-> obj draw bounds w) f0-7)) - ) 0 (none) ) (defmethod dummy-24 citb-stair-plat ((obj citb-stair-plat)) - (if - (and - (task-complete? *game-info* (game-task citadel-sage-blue)) - (task-complete? *game-info* (game-task citadel-sage-red)) - (task-complete? *game-info* (game-task citadel-sage-yellow)) - ) - (go (method-of-object obj citb-base-plat-active)) - (go (method-of-object obj citb-base-plat-idle)) - ) + (if (and + (task-complete? *game-info* (game-task citadel-sage-blue)) + (task-complete? *game-info* (game-task citadel-sage-red)) + (task-complete? *game-info* (game-task citadel-sage-yellow)) + ) + (go (method-of-object obj citb-base-plat-active)) + (go (method-of-object obj citb-base-plat-idle)) + ) 0 (none) ) -(define - *citb-chain-plat-constants* - (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 2.0 - :max-buoyancy-depth (meters 3.0) - :gravity-factor 1.0 - :gravity (meters 80.0) - :player-weight (meters 35.0) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000.0) - :player-force-clamp (meters 1000000.0) - :player-force-timeout #x1e - :explosion-force (meters 1000.0) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 5 - :mass 2.0 - :inertial-tensor-x (meters 10.0) - :inertial-tensor-y (meters 5.0) - :inertial-tensor-z (meters 10.0) - :idle-distance (meters 70.0) - :platform #t - :sound-name "blue-eco-on" - ) - ) +(define *citb-chain-plat-constants* (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 3.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 1000.0) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 5 + :mass 2.0 + :inertial-tensor-x (meters 10.0) + :inertial-tensor-y (meters 5.0) + :inertial-tensor-z (meters 10.0) + :idle-distance (meters 70.0) + :platform #t + :sound-name "blue-eco-on" + ) + ) (deftype citb-chain-plat (rigid-body-platform) ((orig-trans vector :inline :offset-assert 736) @@ -585,49 +457,36 @@ ) -(defmethod - TODO-RENAME-22 - citb-chain-plat - ((obj citb-chain-plat) (arg0 vector) (arg1 float)) - (+ - 12288.0 - (* - 2048.0 - (fmax 0.0 (fmin 1.0 (* 0.000024414063 (-> obj float-height-offset)))) - (cos - (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))) +(defmethod TODO-RENAME-22 citb-chain-plat ((obj citb-chain-plat) (arg0 vector) (arg1 float)) + (+ 12288.0 + (* 2048.0 + (fmax 0.0 (fmin 1.0 (* 0.000024414063 (-> obj float-height-offset)))) + (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z))))) + ) + (-> obj float-height-offset) + (-> obj orig-trans y) ) - ) - (-> obj float-height-offset) - (-> obj orig-trans y) - ) ) (defmethod TODO-RENAME-27 citb-chain-plat ((obj citb-chain-plat) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 arg0 (-> obj rbody position)) - (set! (-> gp-0 y) 0.0) - (let* ((f0-1 (vector-length gp-0)) - (f1-1 (* 4.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 f0-1))))) - ) - (when (< 0.0 f1-1) - (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) - (TODO-RENAME-15 (-> obj rbody) gp-0) - ) + (vector-! gp-0 arg0 (-> obj rbody position)) + (set! (-> gp-0 y) 0.0) + (let* ((f0-1 (vector-length gp-0)) + (f1-1 (* 4.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 f0-1))))) + ) + (when (< 0.0 f1-1) + (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) + (TODO-RENAME-15 (-> obj rbody) gp-0) + ) + ) ) - ) 0 (none) ) (defmethod TODO-RENAME-23 citb-chain-plat ((obj citb-chain-plat) (arg0 float)) - ((the-as - (function rigid-body-platform float none) - (find-parent-method citb-chain-plat 23) - ) - obj - arg0 - ) + ((the-as (function rigid-body-platform float none) (find-parent-method citb-chain-plat 23)) obj arg0) (TODO-RENAME-27 obj (-> obj orig-trans)) 0 (none) @@ -637,32 +496,22 @@ :virtual #t :trans (behavior () - (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (if - (and - (and - *target* - (>= - (-> self info idle-distance) - (vector-vector-distance - (-> self root-overlay trans) - (-> *target* control trans) - ) - ) - ) - (send-event *target* 'query 'powerup 3) + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (if (and + (and *target* (>= (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (send-event *target* 'query 'powerup 3) + ) + (go-virtual rigid-body-platform-float) + ) ) - (go-virtual rigid-body-platform-float) - ) + (none) ) - (none) - ) :code - (behavior () - (anim-loop) - (none) - ) + (behavior () (anim-loop) (none)) :post (the-as (function none :behavior citb-chain-plat) ja-post) ) @@ -671,74 +520,51 @@ :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior citb-chain-plat) - rigid-body-platform-event-handler - ) + (function process int symbol event-message-block object :behavior citb-chain-plat) + rigid-body-platform-event-handler + ) :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :exit - (behavior () - (stop! (-> self sound)) - (none) - ) + (behavior () (stop! (-> self sound)) (none)) :trans (behavior () - (cond - ((and - (and - *target* - (>= - (-> self info idle-distance) - (vector-vector-distance - (-> self root-overlay trans) - (-> *target* control trans) + (cond + ((and + (and + *target* + (>= (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (send-event *target* 'query 'powerup 3) ) + (when (< (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (if (rand-vu-percent? 0.05) + (spawn-projectile-blue *target*) + ) + ) + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) (-> self float-offset) (* 8192.0 (-> *display* seconds-per-frame))) + ) + (draw-eco-beam (-> self root-overlay trans) (-> self beam-end)) + (update-trans! (-> self sound) (-> self root-overlay trans)) + (update! (-> self sound)) + ) + (else + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) (-> self idle-offset) (* 16384.0 (-> *display* seconds-per-frame))) + ) + (stop! (-> self sound)) + (if (= (-> self float-height-offset) (-> self idle-offset)) + (go citb-chain-plat-settle) + ) ) - ) - (send-event *target* 'query 'powerup 3) ) - (when (< (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (if (rand-vu-percent? 0.05) - (spawn-projectile-blue *target*) - ) - ) - (set! - (-> self float-height-offset) - (seek - (-> self float-height-offset) - (-> self float-offset) - (* 8192.0 (-> *display* seconds-per-frame)) - ) - ) - (draw-eco-beam (-> self root-overlay trans) (-> self beam-end)) - (update-trans! (-> self sound) (-> self root-overlay trans)) - (update! (-> self sound)) - ) - (else - (set! - (-> self float-height-offset) - (seek - (-> self float-height-offset) - (-> self idle-offset) - (* 16384.0 (-> *display* seconds-per-frame)) - ) - ) - (stop! (-> self sound)) - (if (= (-> self float-height-offset) (-> self idle-offset)) - (go citb-chain-plat-settle) - ) - ) + (none) ) - (none) - ) :code - (behavior () - (anim-loop) - (none) - ) + (behavior () (anim-loop) (none)) :post (the-as (function none :behavior citb-chain-plat) rigid-body-platform-post) ) @@ -748,93 +574,58 @@ (the-as (function none :behavior citb-chain-plat) rider-trans) :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (set! (-> gp-0 quad) (-> self root-overlay trans quad)) - (quaternion-copy! s5-0 (-> self root-overlay quat)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 75) - (let - ((f30-0 - (* - 0.013333334 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - ) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'quaternion)) + ) + (set! (-> gp-0 quad) (-> self root-overlay trans quad)) + (quaternion-copy! s5-0 (-> self root-overlay quat)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 75) + (let ((f30-0 (* 0.013333334 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + (quaternion-slerp! (-> self root-overlay quat) s5-0 (-> self orig-quat) f30-0) + (vector-lerp! (-> self root-overlay trans) gp-0 (-> self orig-trans) f30-0) + ) + (suspend) ) - ) - (quaternion-slerp! - (-> self root-overlay quat) - s5-0 - (-> self orig-quat) - f30-0 - ) - (vector-lerp! - (-> self root-overlay trans) - gp-0 - (-> self orig-trans) - f30-0 - ) ) - (suspend) - ) + (set! (-> self root-overlay trans quad) (-> self orig-trans quad)) + (quaternion-copy! (-> self root-overlay quat) (-> self orig-quat)) + (TODO-RENAME-22 + (-> self rbody) + (-> self root-overlay trans) + (-> self root-overlay quat) + (-> self info linear-damping) + (-> self info angular-damping) + ) + (suspend) + (go-virtual rigid-body-platform-idle) + (none) ) - (set! (-> self root-overlay trans quad) (-> self orig-trans quad)) - (quaternion-copy! (-> self root-overlay quat) (-> self orig-quat)) - (TODO-RENAME-22 - (-> self rbody) - (-> self root-overlay trans) - (-> self root-overlay quat) - (-> self info linear-damping) - (-> self info angular-damping) - ) - (suspend) - (go-virtual rigid-body-platform-idle) - (none) - ) :post (the-as (function none :behavior citb-chain-plat) rider-post) ) (defmethod TODO-RENAME-30 citb-chain-plat ((obj citb-chain-plat)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) @@ -847,39 +638,34 @@ (set! (-> obj beam-end y) (+ -49152.0 (-> obj beam-end y))) (TODO-RENAME-29 obj *citb-chain-plat-constants*) (set! (-> obj idle-offset) 0.0) - (set! - (-> obj float-offset) - (res-lump-float (-> obj entity) 'height-info :default 4096.0) - ) + (set! (-> obj float-offset) (res-lump-float (-> obj entity) 'height-info :default 4096.0)) (set! (-> obj float-height-offset) (-> obj idle-offset)) - (set! - (-> obj sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "eco-plat-hover") - :volume #x400 - :fo-max 50 - ) - (-> obj root-overlay trans) - ) - ) + (set! (-> obj sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "eco-plat-hover") + :volume #x400 + :fo-max 50 + ) + (-> obj root-overlay trans) + ) + ) (let ((s5-0 (-> obj info control-point-count))) - (dotimes (s4-0 s5-0) - (let ((s3-0 (-> obj control-point-array data s4-0))) - (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) - (set! (-> s3-0 local-pos x) (* 16384.0 (sin f30-0))) - (set! (-> s3-0 local-pos y) 0.0) - (set! (-> s3-0 local-pos z) (* 16384.0 (cos f30-0))) + (dotimes (s4-0 s5-0) + (let ((s3-0 (-> obj control-point-array data s4-0))) + (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (set! (-> s3-0 local-pos x) (* 16384.0 (sin f30-0))) + (set! (-> s3-0 local-pos y) 0.0) + (set! (-> s3-0 local-pos z) (* 16384.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) ) - (set! (-> s3-0 local-pos w) 1.0) - ) ) - ) 0 (none) ) @@ -907,111 +693,73 @@ (the-as (function none :behavior citb-rotatebox) rider-trans) :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! - ) - ) - ) - (if - (or - (not *target*) - (< - (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (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!) + ) + ) + (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (go-virtual citb-base-plat-idle) + ) ) - (go-virtual citb-base-plat-idle) - ) + (none) ) - (none) - ) ) (defmethod dummy-21 citb-rotatebox ((obj citb-rotatebox)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 -20480.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 -20480.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1044,58 +792,40 @@ :virtual #t :post (behavior () - (update! (-> self sound)) - (quaternion-axis-angle! - (-> self root-override quat) - 0.0 - 1.0 - 0.0 - (* 65536.0 (get-current-phase (-> self sync))) + (update! (-> self sound)) + (quaternion-axis-angle! + (-> self root-override quat) + 0.0 + 1.0 + 0.0 + (* 65536.0 (get-current-phase (-> self sync))) + ) + (rider-post) + (none) ) - (rider-post) - (none) - ) ) (defmethod dummy-21 citb-donut ((obj citb-donut)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1103,22 +833,20 @@ (defmethod dummy-22 citb-donut ((obj citb-donut)) (initialize-skeleton obj *citb-donut-sg* '()) (setup-params! (-> obj sync) (the-as uint 9000) 0.0 0.15 0.15) - (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) - ) - ) + (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) + ) + ) (logclear! (-> obj mask) (process-mask actor-pause)) 0 (none) @@ -1145,31 +873,22 @@ :virtual #t :trans (behavior () - (set! (-> self path-pos) (get-current-phase (-> self sync))) - (eval-path-curve! - (-> self path) - (-> self basetrans) - (-> self path-pos) - 'interp + (set! (-> self path-pos) (get-current-phase (-> self sync))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root-override trans) (ear-trans)) 81920.0) + (sound-play-by-name + (static-sound-name "eco-plat-hover") + (-> self sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + ) + (plat-trans) + (none) ) - (if - (< - (vector-vector-distance (-> self root-override trans) (ear-trans)) - 81920.0 - ) - (sound-play-by-name - (static-sound-name "eco-plat-hover") - (-> self sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self root-override trans)) - ) - ) - (plat-trans) - (none) - ) ) (defmethod get-unlit-skel citb-stopbox ((obj citb-stopbox)) @@ -1177,44 +896,26 @@ ) (defmethod dummy-24 citb-stopbox ((obj citb-stopbox)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 19)) + (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 22528.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (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 22528.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1251,28 +952,21 @@ (defstate citb-firehose-idle (citb-firehose) :trans (behavior () - (if - (and - *target* - (>= - (-> self idle-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (go citb-firehose-active) + (if (and *target* (>= (-> self idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (go citb-firehose-active) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-firehose) ja-post) ) @@ -1280,285 +974,190 @@ (defstate citb-firehose-active (citb-firehose) :trans (behavior () - (if - (or - (not *target*) - (< - (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) + (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (go citb-firehose-idle) + ) + (let ((f0-2 (get-current-phase (-> self sync))) + (f1-1 (-> self last-sync)) + ) + (set! (-> self last-sync) f0-2) + (if (< f0-2 f1-1) + (go citb-firehose-blast) + ) ) - ) - (go citb-firehose-idle) + (none) ) - (let ((f0-2 (get-current-phase (-> self sync))) - (f1-1 (-> self last-sync)) - ) - (set! (-> self last-sync) f0-2) - (if (< f0-2 f1-1) - (go citb-firehose-blast) - ) - ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-firehose) ja-post) ) (defbehavior citb-firehose-blast-particles citb-firehose () (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-identity! gp-0) - (quaternion-rotate-local-x! gp-0 gp-0 -16384.0) - (dotimes (s5-0 16) - (quaternion-rotate-local-z! gp-0 gp-0 2048.0) - (quaternion-copy! *particle-quat* gp-0) - (sp-launch-particles-var - *sp-particle-system-3d* - (-> *part-id-table* 2541) - (-> self blast-pos) - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 - ) + (quaternion-identity! gp-0) + (quaternion-rotate-local-x! gp-0 gp-0 -16384.0) + (dotimes (s5-0 16) + (quaternion-rotate-local-z! gp-0 gp-0 2048.0) + (quaternion-copy! *particle-quat* gp-0) + (sp-launch-particles-var + *sp-particle-system-3d* + (-> *part-id-table* 2541) + (-> self blast-pos) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) ) - ) (spawn (-> self part) (-> self blast-pos)) ) (defstate citb-firehose-blast (citb-firehose) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (let ((v1-4 (new 'static 'attack-info :mask #xe0))) - (set! (-> v1-4 mode) 'damage) - (set! (-> v1-4 shove-back) 24576.0) - (set! (-> v1-4 shove-up) 12288.0) - (set! (-> a1-2 param 1) (the-as uint v1-4)) - ) - (send-event-function arg0 a1-2) + (case arg2 + (('touch) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> arg3 param 0)) + (let ((v1-4 (new 'static 'attack-info :mask #xe0))) + (set! (-> v1-4 mode) 'damage) + (set! (-> v1-4 shove-back) 24576.0) + (set! (-> v1-4 shove-up) 12288.0) + (set! (-> a1-2 param 1) (the-as uint v1-4)) + ) + (send-event-function arg0 a1-2) + ) ) ) ) - ) :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 3)) - ) - (set! - (-> a0-0 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length - ) - -1 - ) + (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!) ) - ) - (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! - ) - ) - ) - (ja-channel-push! 1 30) - (restore-collide-with-as (-> self root-override)) - (sound-play-by-name - (static-sound-name "eco-torch") - (new-sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self blast-pos)) - ) - (dotimes (gp-1 2) - (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) - (set! - (-> self blast-pos quad) - (-> self node-list data 5 bone transform vector 3 quad) - ) - (citb-firehose-blast-particles) - (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! - ) - ) - ) - ) - (clear-collide-with-as (-> self root-override)) - (ja-channel-push! 1 30) - (let ((a0-16 (-> self skel root-channel 0))) - (set! - (-> a0-16 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-16 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (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!) ) - -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 5)) - num-func-seek! - ) + (ja-channel-push! 1 30) + (restore-collide-with-as (-> self root-override)) + (sound-play-by-name + (static-sound-name "eco-torch") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self blast-pos)) + ) + (dotimes (gp-1 2) + (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) + (set! (-> self blast-pos quad) (-> self node-list data 5 bone transform vector 3 quad)) + (citb-firehose-blast-particles) + (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!) + ) + ) + ) + (clear-collide-with-as (-> self root-override)) + (ja-channel-push! 1 30) + (let ((a0-16 (-> self skel root-channel 0))) + (set! (-> a0-16 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-16 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) 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 5)) 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!) + ) + ) + (go citb-firehose-active) + (none) ) - (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! - ) - ) - ) - (go citb-firehose-active) - (none) - ) :post (the-as (function none :behavior citb-firehose) transform-post) ) -(defmethod - init-from-entity! - citb-firehose - ((obj citb-firehose) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 -61440.0 0.0 36864.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 2) - (set-vector! (-> s2-0 local-sphere) 0.0 -49152.0 0.0 12288.0) - (append-prim s3-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 2) - (set-vector! (-> s2-1 local-sphere) 0.0 -61440.0 0.0 14336.0) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 2) - (set-vector! (-> s2-2 local-sphere) 0.0 -73728.0 0.0 16384.0) - (append-prim s3-0 s2-2) - ) +(defmethod init-from-entity! citb-firehose ((obj citb-firehose) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 -61440.0 0.0 36864.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core offense) 2) + (set-vector! (-> s2-0 local-sphere) 0.0 -49152.0 0.0 12288.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core offense) 2) + (set-vector! (-> s2-1 local-sphere) 0.0 -61440.0 0.0 14336.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core offense) 2) + (set-vector! (-> s2-2 local-sphere) 0.0 -73728.0 0.0 16384.0) + (append-prim s3-0 s2-2) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *citb-firehose-sg* '()) (load-params! (-> obj sync) obj (the-as uint 900) 0.0 0.15 0.15) (set! (-> obj idle-distance) 286720.0) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 685) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 685) obj)) (clear-collide-with-as (-> obj root-override)) (go citb-firehose-idle) (none) @@ -1587,25 +1186,25 @@ (defstate citb-exit-plat-idle (citb-exit-plat) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (let ((v1-3 (-> self entity extra perm))) - (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-3 user-int8 0) 1) + (case arg2 + (('trigger) + (let ((v1-3 (-> self entity extra perm))) + (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-3 user-int8 0) 1) + ) + (go citb-exit-plat-rise) ) - (go citb-exit-plat-rise) ) ) - ) :code (behavior () - (logior! (-> self draw status) 2) - (clear-collide-with-as (-> self root-override)) - (while #t - (suspend) + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self root-override)) + (while #t + (suspend) + ) + (none) ) - (none) - ) ) (defstate citb-exit-plat-rise (citb-exit-plat) @@ -1613,53 +1212,40 @@ (the-as (function none :behavior citb-exit-plat) rider-trans) :code (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (restore-collide-with-as (-> self root-override)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while #t - (let - ((f30-0 - (- - 1.0 - (* - 0.0016666667 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (restore-collide-with-as (-> self root-override)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (let ((f30-0 (- 1.0 (* 0.0016666667 (the float (- (-> *display* base-frame-counter) (-> self state-time))))))) + (when (< f30-0 0.0) + (set! (-> self root-override trans y) (-> self rise-height)) + (go-virtual plat-button-idle) + ) + (set! (-> self root-override trans y) (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0))) ) - ) + (suspend) ) - (when (< f30-0 0.0) - (set! (-> self root-override trans y) (-> self rise-height)) - (go-virtual plat-button-idle) - ) - (set! - (-> self root-override trans y) - (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0)) - ) - ) - (suspend) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-exit-plat) rider-post) ) (defbehavior citb-exit-plat-move-player citb-exit-plat ((arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (-> self root-override trans) arg0) - (vector-! s5-0 (-> *target* control trans) (-> self root-override trans)) - (set! (-> s5-0 y) 0.0) - (let ((f30-0 (vector-length s5-0))) - (when (< 122880.0 f30-0) - (vector-normalize! s5-0 1.0) - (vector+*! gp-0 gp-0 s5-0 (- 122880.0 f30-0)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (-> self root-override trans) arg0) + (vector-! s5-0 (-> *target* control trans) (-> self root-override trans)) + (set! (-> s5-0 y) 0.0) + (let ((f30-0 (vector-length s5-0))) + (when (< 122880.0 f30-0) + (vector-normalize! s5-0 1.0) + (vector+*! gp-0 gp-0 s5-0 (- 122880.0 f30-0)) + ) + ) ) - ) + (TODO-RENAME-28 (-> *target* control) gp-0) ) - (TODO-RENAME-28 (-> *target* control) gp-0) - ) (send-event *target* 'reset-height) 0 (none) @@ -1669,24 +1255,17 @@ :virtual #t :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root-override trans quad)) - (let - ((t9-1 - (-> - (the-as (state plat-button) (find-parent-method citb-exit-plat 23)) - trans + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root-override trans quad)) + (let ((t9-1 (-> (the-as (state plat-button) (find-parent-method citb-exit-plat 23)) trans))) + (if t9-1 + (t9-1) + ) ) - ) + (citb-exit-plat-move-player gp-0) ) - (if t9-1 - (t9-1) - ) - ) - (citb-exit-plat-move-player gp-0) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-exit-plat) transform-post) ) @@ -1695,24 +1274,17 @@ :virtual #t :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root-override trans quad)) - (let - ((t9-1 - (-> - (the-as (state plat-button) (find-parent-method citb-exit-plat 24)) - trans + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root-override trans quad)) + (let ((t9-1 (-> (the-as (state plat-button) (find-parent-method citb-exit-plat 24)) trans))) + (if t9-1 + (t9-1) + ) ) - ) + (citb-exit-plat-move-player gp-0) ) - (if t9-1 - (t9-1) - ) - ) - (citb-exit-plat-move-player gp-0) + (none) ) - (none) - ) :post (the-as (function none :behavior citb-exit-plat) transform-post) ) @@ -1728,80 +1300,52 @@ (defmethod TODO-RENAME-32 citb-exit-plat ((obj citb-exit-plat)) (if (-> obj activated) - (go (method-of-object obj plat-button-idle)) - (go citb-exit-plat-idle) - ) + (go (method-of-object obj plat-button-idle)) + (go citb-exit-plat-idle) + ) 0 (none) ) (defmethod TODO-RENAME-28 citb-exit-plat ((obj citb-exit-plat)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 122880.0) - (set-root-prim! s5-0 s4-0) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 1) + (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) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 122880.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 -2867.2 0.0 7372.8) + (append-prim s4-0 s3-0) ) - ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 -2867.2 0.0 7372.8) - (append-prim s4-0 s3-0) - ) - (let - ((s3-1 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 1) - (the-as uint 2) + (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) + (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-1 collide-with) (the-as uint 16)) + (set! (-> s3-1 prim-core action) (the-as uint 3)) + (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 transform-index) 3) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 122880.0) + (append-prim s4-0 s3-1) ) - ) ) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) - (set! (-> s3-1 transform-index) 3) - (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 122880.0) - (append-prim s4-0 s3-1) - ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + s5-0 ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - s5-0 - ) ) (defmethod can-target-move? citb-exit-plat ((obj citb-exit-plat)) @@ -1809,34 +1353,31 @@ (logclear! (-> obj mask) (process-mask actor-pause)) (set! (-> obj draw light-index) (the-as uint 255)) (let ((a0-5 (entity-actor-lookup (-> obj entity) 'state-actor 0))) - (set! - (-> obj activated) - (logtest? (-> a0-5 extra perm status) (entity-perm-status complete)) + (set! (-> obj activated) (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) ) - ) (cond - ((= (-> *game-info* current-continue level) 'finalboss) - (let ((v1-8 (-> obj entity extra perm))) - (logior! (-> v1-8 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-8 user-int8 0) 1) + ((= (-> *game-info* current-continue level) 'finalboss) + (let ((v1-8 (-> obj entity extra perm))) + (logior! (-> v1-8 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-8 user-int8 0) 1) + ) + (set! (-> obj activated) #t) + (set! (-> obj path-pos) 0.0) ) - (set! (-> obj activated) #t) - (set! (-> obj path-pos) 0.0) + (else + (set! (-> obj path-pos) 1.0) + ) ) - (else - (set! (-> obj path-pos) 1.0) - ) - ) (let ((s5-0 (-> obj root-override trans))) - (eval-path-curve! (-> obj path) s5-0 (-> obj path-pos) 'interp) - (vector+! s5-0 s5-0 (-> obj trans-off)) - ) + (eval-path-curve! (-> obj path) s5-0 (-> obj path-pos) 'interp) + (vector+! s5-0 s5-0 (-> obj trans-off)) + ) (set! (-> obj rise-height) (-> obj root-override trans y)) (set! (-> obj idle-height) (+ -286720.0 (-> obj rise-height))) (if (-> obj activated) - (set! (-> obj root-override trans y) (-> obj rise-height)) - (set! (-> obj root-override trans y) (-> obj idle-height)) - ) + (set! (-> obj root-override trans y) (-> obj rise-height)) + (set! (-> obj root-override trans y) (-> obj idle-height)) + ) (set! (-> obj allow-auto-kill) #f) (process-entity-status! obj (entity-perm-status bit-3) #t) (the-as symbol 0) diff --git a/goal_src/levels/common/basebutton.gc b/goal_src/levels/common/basebutton.gc index 456f2e52b5..db96f7ca15 100644 --- a/goal_src/levels/common/basebutton.gc +++ b/goal_src/levels/common/basebutton.gc @@ -54,378 +54,271 @@ :longest-edge (meters 0) ) -(defmethod - move-to-vec-or-quat! - basebutton - ((obj basebutton) (arg0 vector) (arg1 quaternion)) +(defmethod move-to-vec-or-quat! basebutton ((obj basebutton) (arg0 vector) (arg1 quaternion)) (set! (-> obj move-to?) #t) (if arg0 - (set! (-> obj move-to-pos quad) (-> arg0 quad)) - (set! (-> obj move-to-pos quad) (-> obj root-override trans quad)) - ) + (set! (-> obj move-to-pos quad) (-> arg0 quad)) + (set! (-> obj move-to-pos quad) (-> obj root-override trans quad)) + ) (if arg1 - (quaternion-copy! (-> obj move-to-quat) arg1) - (quaternion-copy! (-> obj move-to-quat) (-> obj root-override quat)) - ) + (quaternion-copy! (-> obj move-to-quat) arg1) + (quaternion-copy! (-> obj move-to-quat) (-> obj root-override quat)) + ) ) (defstate basebutton-startup (basebutton) :virtual #t :code (behavior () - (if (-> self down?) - (go-virtual basebutton-down-idle) - (go-virtual basebutton-up-idle) + (if (-> self down?) + (go-virtual basebutton-down-idle) + (go-virtual basebutton-up-idle) + ) + (none) ) - (none) - ) ) (defstate basebutton-up-idle (basebutton) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('attack) - (case (-> arg3 param 1) - (('flop) - (TODO-RENAME-29 self (-> self event-going-down) (-> self notify-actor)) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (case arg2 + (('attack) + (case (-> arg3 param 1) + (('flop) + (TODO-RENAME-29 self (-> self event-going-down) (-> self notify-actor)) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-down) ) - (go-virtual basebutton-going-down) ) ) + (('trigger) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-down) + ) + (('move-to) + (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + ) ) - (('trigger) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (go-virtual basebutton-going-down) - ) - (('move-to) - (move-to-vec-or-quat! - self - (the-as vector (-> arg3 param 0)) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :enter - (behavior () - (press! self #f) - (none) - ) + (behavior () (press! self #f) (none)) :trans (behavior () - (if (-> self move-to?) - (rider-trans) + (if (-> self move-to?) + (rider-trans) + ) + (none) ) - (none) - ) :code (the-as (function none :behavior basebutton) anim-loop) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root-override trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (rider-post) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root-override trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (rider-post) + ) + (none) ) - (none) - ) ) (defstate basebutton-going-down (basebutton) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('untrigger) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (case arg2 + (('untrigger) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-up) + ) + (('move-to) + (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) ) - (go-virtual basebutton-going-up) ) - (('move-to) - (move-to-vec-or-quat! - self - (the-as vector (-> arg3 param 0)) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :enter - (behavior () - (press! self #t) - (none) - ) + (behavior () (press! self #t) (none)) :trans (the-as (function none :behavior basebutton) rider-trans) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! - (-> a0-0 param 0) - (the float (+ (-> a0-0 frame-group data 0 length) -1)) - ) - (set! (-> a0-0 param 1) (-> self anim-speed)) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 param 0) - (the float (+ (-> a0-1 frame-group data 0 length) -1)) + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1))) + (set! (-> a0-0 param 1) (-> self anim-speed)) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) ) - (set! (-> a0-1 param 1) (-> self anim-speed)) - (joint-control-channel-group-eval! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! + (until (ja-done? 0) + (suspend) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) (the float (+ (-> a0-1 frame-group data 0 length) -1))) + (set! (-> a0-1 param 1) (-> self anim-speed)) + (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) + (TODO-RENAME-29 self (-> self event-down) (-> self notify-actor)) + (go-virtual basebutton-down-idle) + (none) ) - (TODO-RENAME-29 self (-> self event-down) (-> self notify-actor)) - (go-virtual basebutton-down-idle) - (none) - ) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root-override trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root-override trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + ) + (rider-post) + (none) ) - (rider-post) - (none) - ) ) (defstate basebutton-down-idle (basebutton) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('untrigger) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (case arg2 + (('untrigger) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-up) + ) + (('move-to) + (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) ) - (go-virtual basebutton-going-up) ) - (('move-to) - (move-to-vec-or-quat! - self - (the-as vector (-> arg3 param 0)) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :enter - (behavior () - (press! self #t) - (none) - ) + (behavior () (press! self #t) (none)) :trans (behavior () - (if (-> self move-to?) - (rider-trans) + (if (-> self move-to?) + (rider-trans) + ) + (none) ) - (none) - ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (cond - ((= (-> self timeout) 0.0) - (anim-loop) - ) - (else - (until - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (the int (* 300.0 (-> self timeout))) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (cond + ((= (-> self timeout) 0.0) + (anim-loop) ) - (suspend) + (else + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) + (suspend) + ) + (TODO-RENAME-29 self (-> self event-going-up) (-> self notify-actor)) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-up) + ) ) - (TODO-RENAME-29 self (-> self event-going-up) (-> self notify-actor)) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (go-virtual basebutton-going-up) - ) + (none) ) - (none) - ) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root-override trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (rider-post) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root-override trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (rider-post) + ) + (none) ) - (none) - ) ) (defstate basebutton-going-up (basebutton) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('move-to) - (move-to-vec-or-quat! - self - (the-as vector (-> arg3 param 0)) - (the-as quaternion (-> arg3 param 1)) + (case arg2 + (('move-to) + (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + ) + (('trigger) + (sound-play-by-name (static-sound-name "silo-button") (new-sound-id) 1024 0 0 1 #t) + (go-virtual basebutton-going-down) ) ) - (('trigger) - (sound-play-by-name - (static-sound-name "silo-button") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (go-virtual basebutton-going-down) - ) ) - ) :enter - (behavior () - (press! self #f) - (none) - ) + (behavior () (press! self #f) (none)) :trans (the-as (function none :behavior basebutton) rider-trans) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! (-> a0-0 param 0) 0.0) - (set! (-> a0-0 param 1) (-> self anim-speed)) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-1 (-> self skel root-channel 0))) - (set! (-> a0-1 param 0) 0.0) - (set! (-> a0-1 param 1) (-> self anim-speed)) - (joint-control-channel-group-eval! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) 0.0) + (set! (-> a0-0 param 1) (-> self anim-speed)) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) ) - ) + (until (ja-done? 0) + (suspend) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 0.0) + (set! (-> a0-1 param 1) (-> self anim-speed)) + (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (TODO-RENAME-29 self (-> self event-up) (-> self notify-actor)) + (go-virtual basebutton-up-idle) + (none) ) - (TODO-RENAME-29 self (-> self event-up) (-> self notify-actor)) - (go-virtual basebutton-up-idle) - (none) - ) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root-override trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root-override trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + ) + (rider-post) + (none) ) - (rider-post) - (none) - ) ) (defmethod press! basebutton ((obj basebutton) (arg0 symbol)) (set! (-> obj down?) arg0) (cond - (arg0 - (if (not (-> obj spawned-by-other?)) - (process-entity-status! obj (entity-perm-status complete) #t) - ) + (arg0 + (if (not (-> obj spawned-by-other?)) + (process-entity-status! obj (entity-perm-status complete) #t) + ) + ) + (else + (if (not (-> obj spawned-by-other?)) + (process-entity-status! obj (entity-perm-status complete) #f) + ) + ) ) - (else - (if (not (-> obj spawned-by-other?)) - (process-entity-status! obj (entity-perm-status complete) #f) - ) - ) - ) ) -(defmethod - TODO-RENAME-29 - basebutton - ((obj basebutton) (arg0 symbol) (arg1 entity)) +(defmethod TODO-RENAME-29 basebutton ((obj basebutton) (arg0 symbol) (arg1 entity)) (with-pp - (when arg0 - (cond - (arg1 - (let ((v1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-0 from) pp) - (set! (-> v1-0 num-params) 0) - (set! (-> v1-0 message) arg0) - (let ((a1-1 arg1)) - (send-event-function (if a1-1 - (-> a1-1 extra process) - ) - v1-0 - ) + (when arg0 + (cond + (arg1 + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) pp) + (set! (-> v1-0 num-params) 0) + (set! (-> v1-0 message) arg0) + (let ((a1-1 arg1)) + (send-event-function + (if a1-1 + (-> a1-1 extra process) + ) + v1-0 + ) + ) + ) + ) + (else + (if (nonzero? (-> obj link)) + (send-to-all (-> obj link) arg0) + ) + ) ) - ) ) - (else - (if (nonzero? (-> obj link)) - (send-to-all (-> obj link) arg0) - ) - ) - ) + (none) ) - (none) - ) ) (defmethod reset! basebutton ((obj basebutton)) @@ -439,16 +332,16 @@ (set! (-> obj event-going-up) #f) (set! (-> obj event-up) #f) (let ((f0-1 1.0)) - (set! (-> obj anim-speed) f0-1) - f0-1 - ) + (set! (-> obj anim-speed) f0-1) + f0-1 + ) ) (defmethod arm-trigger-event! basebutton ((obj basebutton)) (let ((v0-0 'trigger)) - (set! (-> obj event-going-down) v0-0) - v0-0 - ) + (set! (-> obj event-going-down) v0-0) + v0-0 + ) ) (defmethod TODO-RENAME-26 basebutton ((obj basebutton)) @@ -456,41 +349,29 @@ (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 - (+ - (-> + ((-> 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)) - data - 0 - length + num-func-identity ) - -1 - ) + (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 + (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! (-> s5-1 frame-num) 0.0) - ) ) - ) (set! (-> obj anim-speed) 2.0) (dummy-47 (-> obj root-override)) (ja-post) @@ -498,134 +379,80 @@ ) (defmethod TODO-RENAME-27 basebutton ((obj basebutton)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-0) ) - ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-0) - ) - (let - ((s3-1 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 1) - (the-as uint 0) + (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-1 collide-with) (the-as uint 16)) + (set! (-> s3-1 prim-core action) (the-as uint 3)) + (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 transform-index) 3) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-1) ) - ) ) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) - (set! (-> s3-1 transform-index) 3) - (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-1) - ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + s5-0 ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - s5-0 - ) ) (defmethod init-from-entity! basebutton ((obj basebutton) (arg0 entity-actor)) (reset! obj) (set! (-> obj spawned-by-other?) #f) (set! (-> obj button-id) -1) - (let - ((v1-4 - (res-lump-value - (-> obj entity) - 'extra-id - uint128 - :default - (the-as uint128 -1) - ) - ) + (let ((v1-4 (res-lump-value (-> obj entity) 'extra-id uint128 :default (the-as uint128 -1)))) + (if (>= (the-as int v1-4) 0) + (set! (-> obj button-id) (the-as int v1-4)) + ) ) - (if (>= (the-as int v1-4) 0) - (set! (-> obj button-id) (the-as int v1-4)) + (when (or (res-lump-struct arg0 'next-actor structure) (res-lump-struct arg0 'prev-actor structure)) + (set! (-> obj link) (new 'process 'actor-link-info obj)) + (if (< (-> obj button-id) 0) + (set! (-> obj button-id) (actor-count-before (-> obj link))) + ) ) - ) - (when - (or - (res-lump-struct arg0 'next-actor structure) - (res-lump-struct arg0 'prev-actor structure) - ) - (set! (-> obj link) (new 'process 'actor-link-info obj)) - (if (< (-> obj button-id) 0) - (set! (-> obj button-id) (actor-count-before (-> obj link))) - ) - ) (TODO-RENAME-27 obj) (process-drawable-from-entity! obj arg0) (let ((v1-16 #f)) - (if - (and - (-> obj entity) - (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) - ) - (set! v1-16 #t) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (set! v1-16 #t) + ) + (set! (-> obj down?) v1-16) ) - (set! (-> obj down?) v1-16) - ) (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> obj timeout) (res-lump-float arg0 'timeout)) (if (not (-> obj spawned-by-other?)) - (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) - ) + (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) + ) (arm-trigger-event! obj) (TODO-RENAME-26 obj) (go (method-of-object obj basebutton-startup)) (none) ) -(defbehavior - basebutton-init-by-other basebutton - ((arg0 basebutton) - (arg1 vector) - (arg2 quaternion) - (arg3 entity-actor) - (arg4 symbol) - (arg5 float) - ) +(defbehavior basebutton-init-by-other basebutton ((arg0 basebutton) (arg1 vector) (arg2 quaternion) (arg3 entity-actor) (arg4 symbol) (arg5 float)) (reset! self) (set! (-> self spawned-by-other?) #t) (set! (-> self button-id) -1) @@ -633,8 +460,8 @@ (set! (-> self notify-actor) arg3) (set! (-> self timeout) arg5) (if arg0 - (set! (-> self entity) (the-as entity arg0)) - ) + (set! (-> self entity) (the-as entity arg0)) + ) (TODO-RENAME-27 self) (set! (-> self root-override trans quad) (-> arg1 quad)) (quaternion-copy! (-> self root-override quat) arg2) @@ -645,21 +472,18 @@ (none) ) -(define - *warp-info* - (the-as (array string) - (new - 'static - 'boxed-array - :type string :length 5 :allocated-length 5 - "training-warp" - "village1-warp" - "village2-warp" - "village3-warp" - "citadel-warp" - ) - ) - ) +(define *warp-info* (the-as (array string) (new + 'static + 'boxed-array + :type string :length 5 :allocated-length 5 + "training-warp" + "village1-warp" + "village2-warp" + "village3-warp" + "citadel-warp" + ) + ) + ) (deftype warp-gate (process-drawable) ((level symbol :offset-assert 176) @@ -683,310 +507,217 @@ (defstate use (warp-gate) :virtual #t :trans - (behavior () - (send-event *camera* 'joystick 0.0 0.0) - (none) - ) + (behavior () (send-event *camera* 'joystick 0.0 0.0) (none)) :code (behavior ((arg0 int) (arg1 level)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (when (not arg1) - (process-release? *target*) - (go-virtual idle) - ) - (let ((s4-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-0 from) self) - (set! (-> s4-0 num-params) 3) - (set! (-> s4-0 message) 'change-state) - (set! (-> s4-0 param 0) (the-as uint target-warp-out)) - (let ((v1-9 (new 'static 'vector))) - (set! (-> v1-9 quad) (-> self root trans quad)) - (set! (-> s4-0 param 1) (the-as uint v1-9)) - ) - (set! (-> s4-0 param 2) (the-as uint (target-pos 0))) - (send-event-function *target* s4-0) - ) - (case (-> self level) - (('citadel 'lavatube) - (while (and *target* (zero? (logand (-> *target* draw status) 2))) - (suspend) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when (not arg1) + (process-release? *target*) + (go-virtual idle) ) - (else - (load-state-want-levels (-> self level) (-> arg1 load-name)) - (while - (or - (not - (member (level-status *level* (-> arg1 load-name)) '(loaded active)) + (let ((s4-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-0 from) self) + (set! (-> s4-0 num-params) 3) + (set! (-> s4-0 message) 'change-state) + (set! (-> s4-0 param 0) (the-as uint target-warp-out)) + (let ((v1-9 (new 'static 'vector))) + (set! (-> v1-9 quad) (-> self root trans quad)) + (set! (-> s4-0 param 1) (the-as uint v1-9)) ) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 600) - ) - (suspend) + (set! (-> s4-0 param 2) (the-as uint (target-pos 0))) + (send-event-function *target* s4-0) ) - ) + (case (-> self level) + (('citadel 'lavatube) + (while (and *target* (zero? (logand (-> *target* draw status) (draw-status drwf01)))) + (suspend) + ) + ) + (else + (load-state-want-levels (-> self level) (-> arg1 load-name)) + (while (or + (not (member (level-status *level* (-> arg1 load-name)) '(loaded active))) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 600) + ) + (suspend) + ) + ) + ) + (set-blackout-frames 15) + (start 'play (get-continue-by-name *game-info* (-> *warp-info* arg0))) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) ) - (set-blackout-frames 15) - (start 'play (get-continue-by-name *game-info* (-> *warp-info* arg0))) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - (none) - ) ) -(define - *warp-jump-mods* - (new 'static 'surface - :name 'jump - :turnv 273066.66 - :turnvv 1820444.5 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 65536.0 - :target-speed 65536.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags #x20 - ) - ) +(define *warp-jump-mods* (new 'static 'surface + :name 'jump + :turnv 273066.66 + :turnvv 1820444.5 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 65536.0 + :target-speed 65536.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags #x20 + ) + ) (defstate target-warp-out (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) 2)))) - (set! (-> self draw status) (the-as uint v0-0)) - v0-0 + (case arg2 + (('death-end) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0 + ) ) + (else + (target-generic-event-handler arg0 arg1 arg2 arg3) + ) ) - (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) ) - ) :enter (behavior ((arg0 vector) (arg1 vector)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self control status) (logand -8 (-> self control status))) - (set! (-> self control unknown-surface00) *warp-jump-mods*) - (set! (-> self control unknown-vector102 quad) (-> arg0 quad)) - (set! (-> self control unknown-vector103 quad) (-> arg1 quad)) - (set! - (-> self control unknown-vector102 y) - (+ -4096.0 (-> self control unknown-vector102 y)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control status) (logand -8 (-> self control status))) + (set! (-> self control unknown-surface00) *warp-jump-mods*) + (set! (-> self control unknown-vector102 quad) (-> arg0 quad)) + (set! (-> self control unknown-vector103 quad) (-> arg1 quad)) + (set! (-> self control unknown-vector102 y) (+ -4096.0 (-> self control unknown-vector102 y))) + (set! (-> self control unknown-uint20) (the-as uint #f)) + (vector-reset! (-> self control transv)) + (logior! (-> self state-flags) 1024) + (set! (-> self alt-cam-pos quad) (-> arg1 quad)) + (none) ) - (set! (-> self control unknown-uint20) (the-as uint #f)) - (vector-reset! (-> self control transv)) - (logior! (-> self state-flags) 1024) - (set! (-> self alt-cam-pos quad) (-> arg1 quad)) - (none) - ) :exit - (behavior () - (set! (-> self state-flags) (logand -1025 (-> self state-flags))) - (none) - ) + (behavior () (set! (-> self state-flags) (logand -1025 (-> self state-flags))) (none)) :code (behavior ((arg0 vector) (arg1 vector)) - (send-event *camera* 'change-state cam-fixed 0) - (ja-channel-push! 1 60) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 41)) - ) - (set! (-> gp-0 param 0) (ja-aframe 16.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 41)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 16.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 *camera* 'change-state cam-fixed 0) + (ja-channel-push! 1 60) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 41))) + (set! (-> gp-0 param 0) (ja-aframe 16.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 41)) num-func-seek!) ) - ) - ) - (vector-! - (-> self control transv) - (-> self control unknown-vector102) - (-> self control trans) - ) - (vector-xz-normalize! (-> self control transv) 32768.0) - (let ((gp-2 (new-stack-vector0))) - (let - ((f0-6 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 16.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!) ) - ) ) - 0.0 - (vector-! - gp-2 - (-> self control transv) - (vector-float*! gp-2 (-> self control dynam gravity-normal) f0-6) - ) - ) - (let* ((f0-7 (vector-length gp-2)) - (f1-1 f0-7) - (f2-4 - (- - (sqrtf - (* - 2.0 - (-> self control dynam gravity-length) - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector102) - (-> self control trans) - ) - ) + (vector-! (-> self control transv) (-> self control unknown-vector102) (-> self control trans)) + (vector-xz-normalize! (-> self control transv) 32768.0) + (let ((gp-2 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-2 (-> self control transv) (vector-float*! gp-2 (-> self control dynam gravity-normal) f0-6)) + ) + (let* ((f0-7 (vector-length gp-2)) + (f1-1 f0-7) + (f2-4 + (- (sqrtf + (* 2.0 + (-> self control dynam gravity-length) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector102) (-> self control trans)) + ) + ) + ) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) ) - ) - (* 0.008333334 (- (-> self control dynam gravity-length))) ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4) + (vector-float*! gp-2 gp-2 (/ f0-7 f1-1)) + ) + ) + ) + (clear-collide-with-as (-> self control)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self trans-hook) + (lambda :behavior target + () + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-3 (vector-length gp-0)) + (f1-0 f0-3) + ) + (if (< f30-0 0.0) + (set! f30-0 8192.0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) + (vector-float*! gp-0 gp-0 (/ f0-3 f1-0)) + ) + ) + ) + (let ((gp-2 (vector-! (new-stack-vector0) (-> self control unknown-vector102) (-> self control trans)))) + (set! (-> gp-2 y) 0.0) + (send-event *target* 'sidekick #f) + (when (and + (or (< (vector-dot gp-2 (-> self control transv)) 0.0) (-> self control unknown-spoolanim00)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 15) + ) + (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (-> *display* seconds-per-frame))) + (set! (-> self control transv x) (* 0.95 (-> self control transv x))) + (set! (-> self control transv z) (* 0.95 (-> self control transv z))) + (when (not (-> self control unknown-spoolanim00)) + (send-event self 'do-effect 'death-warp-out -1.0) + (let ((v0-2 #t)) + (set! (-> self control unknown-uint20) (the-as uint v0-2)) + v0-2 + ) + ) + ) + ) ) - ) - (vector+! - (-> self control transv) - (vector-float*! - (-> self control transv) - (-> self control dynam gravity-normal) - f2-4 - ) - (vector-float*! gp-2 gp-2 (/ f0-7 f1-1)) + ) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 41))) + (set! (-> gp-3 param 0) (ja-aframe 40.0 0)) + (set! (-> gp-3 param 1) 1.0) + (set! (-> gp-3 frame-num) (ja-aframe 16.0 0)) + (joint-control-channel-group! gp-3 (the-as art-joint-anim (-> self draw art-group data 41)) num-func-seek!) ) - ) - ) - (clear-collide-with-as (-> self control)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! - (-> self trans-hook) - (lambda :behavior target () (let ((gp-0 (new-stack-vector0)) - (f30-0 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) - ) - ) - 0.0 - (vector-! - gp-0 - (-> self control transv) - (vector-float*! - gp-0 - (-> self control dynam gravity-normal) - f30-0 - ) - ) - (let* ((f0-3 (vector-length gp-0)) - (f1-0 f0-3) - ) - (if (< f30-0 0.0) - (set! f30-0 8192.0) - ) - (vector+! - (-> self control transv) - (vector-float*! - (-> self control transv) - (-> self control dynam gravity-normal) - f30-0 - ) - (vector-float*! gp-0 gp-0 (/ f0-3 f1-0)) - ) - ) - ) - (let - ((gp-2 - (vector-! - (new-stack-vector0) - (-> self control unknown-vector102) - (-> self control trans) - ) + (until (ja-done? 0) + (suspend) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 param 0) (ja-aframe 40.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!) ) - ) - (set! (-> gp-2 y) 0.0) - (send-event *target* 'sidekick #f) - (when - (and - (or - (< (vector-dot gp-2 (-> self control transv)) 0.0) - (-> self control unknown-spoolanim00) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 15) - ) - (vector-seek! - (-> self draw color-mult) - (new 'static 'vector) - (* 2.0 (-> *display* seconds-per-frame)) - ) - (set! (-> self control transv x) (* 0.95 (-> self control transv x))) - (set! (-> self control transv z) (* 0.95 (-> self control transv z))) - (when (not (-> self control unknown-spoolanim00)) - (send-event self 'do-effect 'death-warp-out -1.0) - (let ((v0-2 #t)) - (set! (-> self control unknown-uint20) (the-as uint v0-2)) - v0-2 - ) - ) - ) ) - ) + (anim-loop) + (none) ) - (let ((gp-3 (-> self skel root-channel 0))) - (set! - (-> gp-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 41)) - ) - (set! (-> gp-3 param 0) (ja-aframe 40.0 0)) - (set! (-> gp-3 param 1) 1.0) - (set! (-> gp-3 frame-num) (ja-aframe 16.0 0)) - (joint-control-channel-group! - gp-3 - (the-as art-joint-anim (-> self draw art-group data 41)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-4 (-> self skel root-channel 0))) - (set! (-> gp-4 param 0) (ja-aframe 40.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! - ) - ) - ) - (anim-loop) - (none) - ) :post target-no-stick-post ) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index 5eb29c5d7d..b902af4c3b 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -52,35 +52,35 @@ (transform-post) (suspend) (while #t - (when (not (-> self bouncing)) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 + (when (not (-> self bouncing)) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + ) + (while (-> self bouncing) + (suspend) + ) ) - (while (-> self bouncing) - (suspend) - ) - ) (none) ) (defbehavior plat-trans baseplat () (rider-trans) (cond - ((-> self bouncing) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self basetrans quad)) - (+! (-> gp-0 y) (* 819.2 (update! (-> self smush)))) - (TODO-RENAME-30 (-> self root-override) gp-0) - ) - (if (not (!= (-> self smush amp) 0.0)) - (set! (-> self bouncing) #f) + ((-> self bouncing) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self basetrans quad)) + (+! (-> gp-0 y) (* 819.2 (update! (-> self smush)))) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + (if (not (!= (-> self smush amp) 0.0)) + (set! (-> self bouncing) #f) + ) ) + (else + (TODO-RENAME-30 (-> self root-override) (-> self basetrans)) + ) ) - (else - (TODO-RENAME-30 (-> self root-override) (-> self basetrans)) - ) - ) (none) ) @@ -96,20 +96,18 @@ (defmethod dummy-20 baseplat ((obj baseplat)) (if (nonzero? (-> obj part)) - (spawn (-> obj part) (-> obj root-override trans)) - ) + (spawn (-> obj part) (-> obj root-override trans)) + ) (none) ) -(defbehavior - plat-event baseplat - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) +(defbehavior plat-event baseplat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) - (the-as object (if (= v1-0 'bonk) - (dummy-22 self) - ) + (the-as object (if (= v1-0 'bonk) + (dummy-22 self) + ) + ) ) - ) ) (deftype eco-door (process-drawable) @@ -142,42 +140,24 @@ ) -(defbehavior - eco-door-event-handler eco-door - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) +(defbehavior eco-door-event-handler eco-door ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) - (the-as object (when (= v1-0 'trigger) - (set! (-> self locked) (not (-> self locked))) - (cond - ((-> self locked) - (if (= (-> self next-state name) 'door-closed) - (sound-play-by-name - (static-sound-name "door-lock") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (the-as object (when (= v1-0 'trigger) + (set! (-> self locked) (not (-> self locked))) + (cond + ((-> self locked) + (if (= (-> self next-state name) 'door-closed) + (sound-play-by-name (static-sound-name "door-lock") (new-sound-id) 1024 0 0 1 #t) + ) + ) + (else + (sound-play-by-name (static-sound-name "door-unlock") (new-sound-id) 1024 0 0 1 #t) + ) ) - ) + #t ) - (else - (sound-play-by-name - (static-sound-name "door-unlock") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - ) - #t - ) + ) ) - ) ) eco-door-event-handler @@ -188,65 +168,42 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (let ((v1-2 (-> self skel root-channel 0))) - (set! (-> v1-2 num-func) num-func-identity) - (set! (-> v1-2 frame-num) 0.0) - ) - (suspend) - (dummy-47 (-> self root-override)) - (ja-post) - (while #t - (when - (and - *target* - (>= - (-> self open-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 num-func) num-func-identity) + (set! (-> v1-2 frame-num) 0.0) ) - (dummy-26 self) - (if - (and - (not (-> self locked)) - (or - (and - (-> self entity) - (logtest? - (-> self entity extra perm status) - (entity-perm-status complete) - ) - ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'powerup)) - (set! (-> a1-1 param 1) (the-as uint 3)) - (send-event-function *target* a1-1) - ) - (and - (-> self one-way) - (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0) - ) - ) - ) - (go-virtual door-opening) - ) - (level-hint-spawn - (game-text-id zero) - (the-as string #f) - (-> self entity) - *entity-pool* - (game-task none) - ) - ) (suspend) + (dummy-47 (-> self root-override)) + (ja-post) + (while #t + (when (and *target* (>= (-> self open-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (dummy-26 self) + (if (and + (not (-> self locked)) + (or + (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'powerup)) + (set! (-> a1-1 param 1) (the-as uint 3)) + (send-event-function *target* a1-1) + ) + (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) + ) + ) + (go-virtual door-opening) + ) + (level-hint-spawn (game-text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) + ) + (suspend) + ) + (none) ) - (none) - ) ) (defstate door-opening (eco-door) @@ -255,57 +212,41 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (let - ((gp-0 - (and - (not - (and - (-> self entity) - (logtest? - (-> self entity extra perm status) - (entity-perm-status complete) + (let ((gp-0 + (and + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (send-event *target* 'query 'powerup 3) + ) + ) ) - ) + (if gp-0 + (sound-play-by-name + (static-sound-name "blue-eco-on") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + ) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) + (clear-collide-with-as (-> self root-override)) + (until (ja-done? 0) + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (set! (-> a0-9 param 1) (-> self speed)) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) + ) + (if (and gp-0 (rand-vu-percent? 0.5)) + (spawn-projectile-blue *target*) + ) + (suspend) ) - (send-event *target* 'query 'powerup 3) - ) ) - ) - (if gp-0 - (sound-play-by-name - (static-sound-name "blue-eco-on") - (new-sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self root-override trans)) - ) - ) - (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) - (clear-collide-with-as (-> self root-override)) - (until (ja-done? 0) - (let ((a0-9 (-> self skel root-channel 0))) - (set! - (-> a0-9 param 0) - (the float (+ (-> a0-9 frame-group data 0 length) -1)) - ) - (set! (-> a0-9 param 1) (-> self speed)) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (if (and gp-0 (rand-vu-percent? 0.5)) - (spawn-projectile-blue *target*) - ) - (suspend) - ) + (go-virtual door-open) + (none) ) - (go-virtual door-open) - (none) - ) :post (the-as (function none :behavior eco-door) transform-post) ) @@ -316,47 +257,37 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (process-entity-status! self (entity-perm-status complete) #t) - (clear-collide-with-as (-> self root-override)) - (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)) - ) - ) - (logior! (-> self draw status) 2) - (suspend) - (dummy-47 (-> self root-override)) - (ja-post) - (while #t - (let ((f30-0 (vector4-dot (-> self out-dir) (target-pos 0))) - (f28-0 (vector4-dot (-> self out-dir) (camera-pos))) - ) - (when - (and - (-> self auto-close) - (or - (not *target*) - (< - (-> self close-distance) - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - ) - (if (and (>= (* f30-0 f28-0) 0.0) (< 16384.0 (fabs f28-0))) - (go-virtual door-closing) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (process-entity-status! self (entity-perm-status complete) #t) + (clear-collide-with-as (-> self root-override)) + (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))) ) - ) + (logior! (-> self draw status) (draw-status drwf01)) (suspend) + (dummy-47 (-> self root-override)) + (ja-post) + (while #t + (let ((f30-0 (vector4-dot (-> self out-dir) (target-pos 0))) + (f28-0 (vector4-dot (-> self out-dir) (camera-pos))) + ) + (when (and + (-> self auto-close) + (or (not *target*) (< (-> self close-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + ) + (if (and (>= (* f30-0 f28-0) 0.0) (< 16384.0 (fabs f28-0))) + (go-virtual door-closing) + ) + ) + ) + (suspend) + ) + (none) ) - (none) - ) ) (defstate door-closing (eco-door) @@ -365,87 +296,60 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (let ((gp-0 (new 'stack 'overlaps-others-params))) - (set! (-> gp-0 options) (the-as uint 1)) - (set! (-> gp-0 tlist) #f) - (while (dummy-40 (-> self root-override) (the-as vector2w gp-0)) - (suspend) - ) - ) - (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) - (set! (-> a0-7 param 1) (-> self speed)) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! + (restore-collide-with-as (-> self root-override)) + (logclear! (-> self draw status) (draw-status drwf01)) + (let ((gp-0 (new 'stack 'overlaps-others-params))) + (set! (-> gp-0 options) (the-as uint 1)) + (set! (-> gp-0 tlist) #f) + (while (dummy-40 (-> self root-override) gp-0) + (suspend) + ) ) - ) - (suspend) + (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) + (set! (-> a0-7 param 1) (-> self speed)) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) + (suspend) + ) + (if (-> self locked) + (sound-play-by-name (static-sound-name "door-lock") (new-sound-id) 1024 0 0 1 #t) + ) + (go-virtual door-closed) + (none) ) - (if (-> self locked) - (sound-play-by-name - (static-sound-name "door-lock") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (go-virtual door-closed) - (none) - ) :post (the-as (function none :behavior eco-door) transform-post) ) (defmethod dummy-26 eco-door ((obj eco-door)) (when (-> obj state-actor) - (if - (logtest? - (-> obj state-actor extra perm status) - (entity-perm-status complete) - ) - (set! (-> obj locked) (logtest? (-> obj flags) 2)) - (set! (-> obj locked) (logtest? (-> obj flags) 1)) + (if (logtest? (-> obj state-actor extra perm status) (entity-perm-status complete)) + (set! (-> obj locked) (logtest? (-> obj flags) 2)) + (set! (-> obj locked) (logtest? (-> obj flags) 1)) + ) ) - ) 0 (none) ) (defmethod TODO-RENAME-24 eco-door ((obj eco-door)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (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) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -459,38 +363,34 @@ eco-door-event-handler (TODO-RENAME-24 obj) (process-drawable-from-entity! obj arg0) (let ((f0-0 (res-lump-float (-> obj entity) 'scale :default 1.0))) - (set-vector! (-> obj root-override scale) f0-0 f0-0 f0-0 1.0) - ) + (set-vector! (-> obj root-override scale) f0-0 f0-0 f0-0 1.0) + ) (set! (-> obj open-distance) 32768.0) (set! (-> obj close-distance) 49152.0) (set! (-> obj speed) 1.0) (set! (-> obj state-actor) #f) (let ((v1-5 (entity-actor-lookup arg0 'state-actor 0))) - (if v1-5 - (set! (-> obj state-actor) v1-5) + (if v1-5 + (set! (-> obj state-actor) v1-5) + ) ) - ) (set! (-> obj locked) #f) (set! (-> obj flags) (res-lump-value arg0 'flags int)) (dummy-26 obj) (set! (-> obj auto-close) (logtest? (-> obj flags) 4)) (set! (-> obj one-way) (logtest? (-> obj flags) 8)) (vector-z-quaternion! (-> obj out-dir) (-> obj root-override quat)) - (set! - (-> obj out-dir w) - (- (vector-dot (-> obj out-dir) (-> obj root-override trans))) - ) + (set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root-override trans)))) (dummy-47 (-> obj root-override)) (TODO-RENAME-25 obj) - (if - (and - (not (-> obj auto-close)) - (-> obj entity) - (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) - ) - (go (method-of-object obj door-open)) - (go (method-of-object obj door-closed)) - ) + (if (and + (not (-> obj auto-close)) + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (go (method-of-object obj door-open)) + (go (method-of-object obj door-closed)) + ) (none) ) diff --git a/goal_src/levels/common/mistycannon.gc b/goal_src/levels/common/mistycannon.gc index 73a0eb75fb..49f8b07050 100644 --- a/goal_src/levels/common/mistycannon.gc +++ b/goal_src/levels/common/mistycannon.gc @@ -920,7 +920,7 @@ ) (set! (-> self root-override root-prim prim-core offense) 4) (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8)) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (if (logtest? (-> self root-override status) 1) (draw-shadow (-> self root-override shadow-pos) @@ -1952,9 +1952,7 @@ (set! (-> obj skel prebind-function) (the-as (function pointer int process-drawable none) mistycannon-prebind-function) ) - (set! (-> obj skel postbind-function) - (the-as (function pointer int process-drawable none) mistycannon-postbind-function) - ) + (set! (-> obj skel postbind-function) mistycannon-postbind-function) (set! (-> obj fact-info-override) (new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) ) diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index 2f9a68775c..146175de31 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -87,7 +87,7 @@ nav-enemy-default-event-handler (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) @@ -240,7 +240,7 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (cond @@ -264,7 +264,7 @@ nav-enemy-default-event-handler (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) (and - (logtest? (-> self draw status) 2) + (logtest? (-> self draw status) (draw-status drwf01)) (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) ) ) @@ -307,7 +307,7 @@ nav-enemy-default-event-handler (ja-post) (suspend) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (anim-loop) (none) ) @@ -491,7 +491,7 @@ nav-enemy-default-event-handler ) ) (sharkey-reset-position) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (go-virtual nav-enemy-idle) (none) ) diff --git a/goal_src/levels/common/water-anim.gc b/goal_src/levels/common/water-anim.gc index 929e1a0e97..353265527d 100644 --- a/goal_src/levels/common/water-anim.gc +++ b/goal_src/levels/common/water-anim.gc @@ -417,536 +417,487 @@ (define *water-anim-look* (the-as (array water-anim-look) - (new - 'static - 'boxed-array - :type water-anim-look :length 48 :allocated-length 48 - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-big-room-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 70 - :fo-max 80 + (new + 'static + 'boxed-array + :type water-anim-look :length 48 :allocated-length 48 + (new 'static 'water-anim-look + :skel-group '*water-anim-sunken-big-room-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 70 + :fo-max 80 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-first-room-from-entrance-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 50 + :fo-max 60 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-sunken-qbert-room-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 48 + :fo-max 58 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-first-right-branch-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 30 + :fo-max 40 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-circular-with-bullys-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 15 + :fo-max 25 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-hall-with-one-whirlpool-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 27 + :fo-max 37 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-hall-with-three-whirlpools-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 26 + :fo-max 36 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-start-of-helix-slide-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 25 + :fo-max 35 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-room-above-exit-chamber-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 45 + :fo-max 55 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-hall-before-big-room-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 20 + :fo-max 30 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-sunken-dark-eco-qbert-sg* + :anim 6 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 40 + :fo-max 50 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-sunken-short-piece-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 20 + :fo-max 30 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-big-room-upper-water-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "water-loop") + :volume #x400 + :fo-min 27 + :fo-max 37 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-dark-eco-platform-room-sg* + :anim 6 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 22 + :fo-max 32 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-maincave-water-with-crystal-sg* + :anim 2 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-maincave-center-pool-sg* + :anim 10 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 70 + :fo-max 80 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-maincave-lower-right-pool-sg* + :anim 10 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 40 + :fo-max 50 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-maincave-mid-right-pool-sg* + :anim 10 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 37 + :fo-max 47 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-maincave-lower-left-pool-sg* + :anim 10 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 20 + :fo-max 30 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-maincave-mid-left-pool-sg* + :anim 10 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 51 + :fo-max 61 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-robocave-main-pool-sg* + :anim 3 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 54 + :fo-max 64 + ) + ) + (new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-arena-sg* :anim 24 :ambient-sound-spec #f) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-above-skeleton-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-behind-skeleton-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-above-skull-back-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-above-skull-front-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-other-near-skull-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-misty-mud-near-skull-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-misty-mud-under-spine-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-dock-sg* :anim 24 :ambient-sound-spec #f) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-island-near-dock-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-misty-mud-lonely-island-sg* + :anim 24 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-misty-dark-eco-pool-sg* + :anim 24 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 17 + :fo-max 27 + ) + ) + (new 'static 'water-anim-look :skel-group '*water-anim-ogre-lava-sg* :anim 2 :ambient-sound-spec #f) + (new 'static 'water-anim-look :skel-group '*water-anim-jungle-river-sg* :anim 3 :ambient-sound-spec #f) + (new 'static 'water-anim-look :skel-group '*water-anim-village3-lava-sg* :anim 3 :ambient-sound-spec #f) + (new 'static 'water-anim-look :skel-group '*water-anim-training-lake-sg* :anim 2 :ambient-sound-spec #f) + (new 'static 'water-anim-look + :skel-group + '*water-anim-darkcave-water-with-crystal-sg* + :anim 2 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-back-sg* :anim 4 :ambient-sound-spec #f) + (new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-front-sg* :anim 4 :ambient-sound-spec #f) + (new 'static 'water-anim-look + :skel-group + '*water-anim-sunken-dark-eco-helix-room-sg* + :anim 6 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "helix-dark-eco") + :volume #x400 + :fo-min #x78 + :fo-max #x82 + ) + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-finalboss-dark-eco-pool-sg* + :anim 2 + :ambient-sound-spec + (new 'static 'sound-spec + :mask #xc0 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "darkeco-pool") + :volume #x400 + :fo-min 19 + :fo-max 29 + ) + ) + (new 'static 'water-anim-look + :skel-group '*water-anim-lavatube-energy-lava-sg* + :anim 2 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look :skel-group '*water-anim-village1-rice-paddy-sg* :anim 8 :ambient-sound-spec #f) + (new 'static 'water-anim-look :skel-group '*water-anim-village1-fountain-sg* :anim 8 :ambient-sound-spec #f) + (new 'static 'water-anim-look + :skel-group + '*water-anim-village1-rice-paddy-mid-sg* + :anim 8 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look + :skel-group + '*water-anim-village1-rice-paddy-top-sg* + :anim 8 + :ambient-sound-spec #f + ) + (new 'static 'water-anim-look :skel-group '*water-anim-village2-bucket-sg* :anim 2 :ambient-sound-spec #f) ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-first-room-from-entrance-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 50 - :fo-max 60 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-qbert-room-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 48 - :fo-max 58 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-first-right-branch-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 30 - :fo-max 40 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-circular-with-bullys-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 15 - :fo-max 25 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-hall-with-one-whirlpool-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 27 - :fo-max 37 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-hall-with-three-whirlpools-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 26 - :fo-max 36 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-start-of-helix-slide-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 25 - :fo-max 35 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-room-above-exit-chamber-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 45 - :fo-max 55 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-hall-before-big-room-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 20 - :fo-max 30 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-dark-eco-qbert-sg* - :anim 6 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 40 - :fo-max 50 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-short-piece-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 20 - :fo-max 30 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-big-room-upper-water-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "water-loop") - :volume #x400 - :fo-min 27 - :fo-max 37 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-dark-eco-platform-room-sg* - :anim 6 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 22 - :fo-max 32 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-maincave-water-with-crystal-sg* - :anim 2 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-maincave-center-pool-sg* - :anim 10 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 70 - :fo-max 80 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-maincave-lower-right-pool-sg* - :anim 10 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 40 - :fo-max 50 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-maincave-mid-right-pool-sg* - :anim 10 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 37 - :fo-max 47 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-maincave-lower-left-pool-sg* - :anim 10 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 20 - :fo-max 30 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-maincave-mid-left-pool-sg* - :anim 10 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 51 - :fo-max 61 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-robocave-main-pool-sg* - :anim 3 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 54 - :fo-max 64 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-misty-mud-by-arena-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-above-skeleton-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-behind-skeleton-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-above-skull-back-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-above-skull-front-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-other-near-skull-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-misty-mud-near-skull-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-misty-mud-under-spine-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-misty-mud-by-dock-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-island-near-dock-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-misty-mud-lonely-island-sg* - :anim 24 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-misty-dark-eco-pool-sg* - :anim 24 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 17 - :fo-max 27 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-ogre-lava-sg* - :anim 2 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-jungle-river-sg* - :anim 3 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-village3-lava-sg* - :anim 3 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-training-lake-sg* - :anim 2 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-darkcave-water-with-crystal-sg* - :anim 2 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-rolling-water-back-sg* - :anim 4 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-rolling-water-front-sg* - :anim 4 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-sunken-dark-eco-helix-room-sg* - :anim 6 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "helix-dark-eco") - :volume #x400 - :fo-min #x78 - :fo-max #x82 - ) - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-finalboss-dark-eco-pool-sg* - :anim 2 - :ambient-sound-spec - (new 'static 'sound-spec - :mask #xc0 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "darkeco-pool") - :volume #x400 - :fo-min 19 - :fo-max 29 - ) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-lavatube-energy-lava-sg* - :anim 2 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-village1-rice-paddy-sg* - :anim 8 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-village1-fountain-sg* - :anim 8 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-village1-rice-paddy-mid-sg* - :anim 8 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group - '*water-anim-village1-rice-paddy-top-sg* - :anim 8 - :ambient-sound-spec #f - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-village2-bucket-sg* - :anim 2 - :ambient-sound-spec #f - ) ) - ) ) (defstate water-vol-idle (water-anim) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (when (= v1-0 'move-to) - (set! - (-> self root trans quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (set! (-> self water-height) (-> self root trans y)) - (if (nonzero? (-> self sound)) - (update-trans! (-> self sound) (-> self root trans)) - ) - (let - ((v0-0 (logclear (-> self mask) (process-mask sleep-code))) - ) - (set! (-> self mask) v0-0) - v0-0 - ) - ) - ) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'move-to) + (set! (-> self root trans quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> self water-height) (-> self root trans y)) + (if (nonzero? (-> self sound)) + (update-trans! (-> self sound) (-> self root trans)) + ) + (let ((v0-0 (logclear (-> self mask) (process-mask sleep-code)))) + (set! (-> self mask) v0-0) + v0-0 + ) + ) + ) + ) ) - ) :trans (behavior () - (let ((t9-0 (-> (method-of-type water-vol water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) + (let ((t9-0 (-> (method-of-type water-vol water-vol-idle) trans))) + (if t9-0 + (t9-0) + ) + ) + (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) + (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) + ) + (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) + (update! (-> self sound)) + ) + (none) ) - (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) - (logior! (-> self draw status) 2) - (set! (-> self draw status) (logand -3 (-> self draw status))) - ) - (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) - (update! (-> self sound)) - ) - (none) - ) :code (behavior () - (while #t - (ja-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) + (while #t + (ja-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + ) + (none) ) - (none) - ) ) (defmethod get-ripple-height water-anim ((obj water-anim) (arg0 vector)) @@ -960,82 +911,59 @@ (defmethod TODO-RENAME-25 water-anim ((obj water-anim)) (local-vars (sv-16 res-tag)) (set! (-> obj play-ambient-sound?) #t) - (set! - (-> obj look) - (res-lump-value (-> obj entity) 'look int :default (the-as uint128 -1)) - ) + (set! (-> obj look) (res-lump-value (-> obj entity) 'look int :default (the-as uint128 -1))) (set! sv-16 (new 'static 'res-tag)) - (let - ((v1-3 - (res-lump-data - (-> obj entity) - 'trans-offset - (pointer float) - :tag-ptr - (& sv-16) + (let ((v1-3 (res-lump-data (-> obj entity) 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-3 + (+! (-> obj root trans x) (-> v1-3 0)) + (+! (-> obj root trans y) (-> v1-3 1)) + (+! (-> obj root trans z) (-> v1-3 2)) ) - ) ) - (when v1-3 - (+! (-> obj root trans x) (-> v1-3 0)) - (+! (-> obj root trans y) (-> v1-3 1)) - (+! (-> obj root trans z) (-> v1-3 2)) - ) - ) (let ((f0-6 (res-lump-float (-> obj entity) 'rotoffset))) - (the-as object (if (!= f0-6 0.0) - (quaternion-rotate-y! - (-> obj root quat) - (-> obj root quat) - f0-6 - ) - ) + (the-as object (if (!= f0-6 0.0) + (quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-6) + ) + ) ) - ) ) (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))) - (go process-drawable-art-error "skel group") - ) - (let ((s5-1 (-> *water-anim-look* s5-0))) - (let ((s4-0 (-> s5-1 skel-group value))) - (let ((s3-0 s4-0)) - (if - (not - (if - (and - (nonzero? s3-0) - (type-type? (-> (the-as basic s3-0) type) skeleton-group) - ) - s3-0 - ) + (if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length))) + (go process-drawable-art-error "skel group") + ) + (let ((s5-1 (-> *water-anim-look* s5-0))) + (let ((s4-0 (-> s5-1 skel-group value))) + (let ((s3-0 s4-0)) + (if (not (if (and (nonzero? s3-0) (type-type? (-> (the-as basic s3-0) type) skeleton-group)) + s3-0 + ) + ) + (go process-drawable-art-error "skel group") + ) + ) + (initialize-skeleton obj (the-as skeleton-group s4-0) '()) + ) + (ja-channel-set! 1) + (let ((s4-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s4-1 + (the-as art-joint-anim (-> obj draw art-group data (-> s5-1 anim))) + num-func-identity + ) + (set! (-> s4-1 frame-num) 0.0) + ) + (let ((a2-2 (-> s5-1 ambient-sound-spec))) + (when a2-2 + (let ((a3-0 (new 'stack-no-clear 'vector))) + (vector+! a3-0 (-> obj root trans) (-> obj draw bounds)) + (set! (-> obj sound) (new 'process 'ambient-sound a2-2 a3-0)) + ) + ) ) - (go process-drawable-art-error "skel group") - ) ) - (initialize-skeleton obj (the-as skeleton-group s4-0) '()) - ) - (ja-channel-set! 1) - (let ((s4-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> obj draw art-group data (-> s5-1 anim))) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) - (let ((a2-2 (-> s5-1 ambient-sound-spec))) - (when a2-2 - (let ((a3-0 (new 'stack-no-clear 'vector))) - (vector+! a3-0 (-> obj root trans) (-> obj draw bounds)) - (set! (-> obj sound) (new 'process 'ambient-sound a2-2 a3-0)) - ) - ) - ) ) - ) (the-as ripple-wave-set (ja-post)) ) diff --git a/goal_src/levels/finalboss/green-eco-lurker.gc b/goal_src/levels/finalboss/green-eco-lurker.gc index 059461380d..bb248ea00f 100644 --- a/goal_src/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/levels/finalboss/green-eco-lurker.gc @@ -45,452 +45,384 @@ :shadow 2 ) -(define - *green-eco-lurker-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 4 - :turn-anim 10 - :notice-anim 9 - :run-anim 4 - :jump-anim 7 - :jump-land-anim 8 - :victory-anim 5 - :taunt-anim 5 - :die-anim 6 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6.0) - :run-rotate-speed (degrees 360.0) - :run-acceleration (meters 1.0) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.0) - :walk-rotate-speed (degrees 360.0) - :walk-acceleration (meters 1.0) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3.0) - :attack-shove-up (meters 2.0) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 2.5) - :nav-nearest-y-threshold (meters 400.0) - :notice-distance (meters 300.0) - :stop-chase-distance (meters 400.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.5) - :shadow-min-y (meters -1.75) - :shadow-locus-dist (meters 150.0) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #f - :use-jump-blocked #t - :use-jump-patrol #f - :gnd-collide-with #x805 - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *green-eco-lurker-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 3 + :walk-anim 4 + :turn-anim 10 + :notice-anim 9 + :run-anim 4 + :jump-anim 7 + :jump-land-anim 8 + :victory-anim 5 + :taunt-anim 5 + :die-anim 6 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6.0) + :run-rotate-speed (degrees 360.0) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.0) + :walk-rotate-speed (degrees 360.0) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 2.5) + :nav-nearest-y-threshold (meters 400.0) + :notice-distance (meters 300.0) + :stop-chase-distance (meters 400.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.5) + :shadow-min-y (meters -1.75) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #f + :use-jump-blocked #t + :use-jump-patrol #f + :gnd-collide-with #x805 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) -(set! - (-> *part-group-id-table* 643) - (new 'static 'sparticle-launch-group - :length 37 - :duration #x258 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-green-eco-lurker-death" - :launcher - (new 'static 'inline-array sparticle-group-item 37 - (sp-item 2585 :fade-after (meters 100.0) :period 600 :length 5 :binding 2583) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2586 :period 600 :length 5) - (sp-item 2587 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) - (sp-item 2588 :period 600 :length 20) - (sp-item 2589 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) - ) - :bounds (new 'static 'sphere :w 49152.0) - ) - ) - -(set! - (-> *part-id-table* 2587) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 6.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 128.0 1.0) - (sp-rnd-flt spt-g 0.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-rnd-flt spt-a 32.0 96.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.0016666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) - (sp-flt spt-friction 0.9) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit14) - (sp-int-plain-rnd spt-next-time 30 29 1) - (sp-launcher-by-id spt-next-launcher 2590) - (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-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2590) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 5 - (sp-flt spt-fade-r 0.0) - (sp-flt spt-fade-g 0.0) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-fade-a -1.4222223) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2589) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 3.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) - (sp-flt spt-scale-y (meters 8.0)) - (sp-rnd-flt spt-r 64.0 192.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 0.42666668)) - (sp-flt spt-fade-a -1.6) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2586) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 16.0)) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 192.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-flt spt-a 96.0) - (sp-flt spt-fade-a -1.7454545) - (sp-int spt-timer 54) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2588) - (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 4.0) - (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-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.053333335) (meters 0.013333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.42666668) - (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 110.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2585) - (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 16.0) - (sp-flt spt-y (meters 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* 2583) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) - (sp-rnd-flt spt-z 1228.8 1228.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (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 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-omega 0.0 65536.0 1.0) - (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.000909091)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -0.26666668) - (sp-flt spt-fade-a -0.19393939) - (sp-int-plain-rnd spt-timer 90 149 1) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2584) - (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 1.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 32.0 96.0 1.0) - (sp-rnd-flt spt-g 0.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-scalevel-x (meters -0.0006190476)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.01904762) - (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) - (sp-int-plain-rnd spt-timer 30 299 1) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 240) - (sp-launcher-by-id spt-next-launcher 198) - (sp-end) - ) - ) - ) - -(defmethod - dummy-43 - green-eco-lurker - ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) - (cond - ((= (-> arg0 type) target) - (if - (nav-enemy-send-attack - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 'generic +(set! (-> *part-group-id-table* 643) + (new 'static 'sparticle-launch-group + :length 37 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-green-eco-lurker-death" + :launcher + (new 'static 'inline-array sparticle-group-item 37 + (sp-item 2585 :fade-after (meters 100.0) :period 600 :length 5 :binding 2583) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2586 :period 600 :length 5) + (sp-item 2587 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2588 :period 600 :length 20) + (sp-item 2589 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) ) - (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) - ) - #f - ) - (else - (nav-enemy-set-hit-from-direction arg0) - ((method-of-type nav-enemy dummy-43) obj arg0 arg1) - ) - ) - ) -(defmethod - nav-enemy-attack-handler - green-eco-lurker - ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) - (cond - ((= (-> arg0 type) target) - (if - (nav-enemy-send-attack - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 'generic +(set! (-> *part-id-table* 2587) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 29 1) + (sp-launcher-by-id spt-next-launcher 2590) + (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-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) ) - (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + +(set! (-> *part-id-table* 2590) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.4222223) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2589) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 8.0)) + (sp-rnd-flt spt-r 64.0 192.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 0.42666668)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2586) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 192.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-flt spt-a 96.0) + (sp-flt spt-fade-a -1.7454545) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2588) (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 4.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-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.053333335) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.42666668) + (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 110.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2585) (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 16.0) + (sp-flt spt-y (meters 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* 2583) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 1228.8 1228.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (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 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-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 90 149 1) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2584) (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 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0006190476)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.01904762) + (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) + ) + ) + ) + +(defmethod dummy-43 green-eco-lurker ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) + (cond + ((= (-> arg0 type) target) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) + (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + ) + #f ) - #f + (else + (nav-enemy-set-hit-from-direction arg0) + ((method-of-type nav-enemy dummy-43) obj arg0 arg1) + ) ) - (else - ((method-of-type nav-enemy nav-enemy-attack-handler) obj arg0 arg1) - ) - ) ) -(defmethod - dummy-44 - green-eco-lurker - ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) - (when - (and - (logtest? (-> obj nav-enemy-flags) 64) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) +(defmethod nav-enemy-attack-handler green-eco-lurker ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) + (cond + ((= (-> arg0 type) target) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) + (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + ) + #f ) + (else + ((method-of-type nav-enemy nav-enemy-attack-handler) obj arg0 arg1) + ) ) - (if - (nav-enemy-send-attack - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 'generic - ) - (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) - ) - ) ) -(defmethod - nav-enemy-touch-handler - green-eco-lurker - ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) - (when - (and - (logtest? (-> obj nav-enemy-flags) 64) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) - ) +(defmethod dummy-44 green-eco-lurker ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) + (when (and (logtest? (-> obj nav-enemy-flags) 64) ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) + (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + ) ) - (if - (nav-enemy-send-attack - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 'generic - ) - (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + ) + +(defmethod nav-enemy-touch-handler green-eco-lurker ((obj green-eco-lurker) (arg0 process) (arg1 event-message-block)) + (when (and (logtest? (-> obj nav-enemy-flags) 64) ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) + (send-event (ppointer->process (-> obj parent)) 'blob-hit-jak) + ) ) - ) ) (defmethod dummy-51 green-eco-lurker ((obj green-eco-lurker) (arg0 vector)) - (when - (or - (not *target*) - (>= (vector-vector-xz-distance arg0 (target-pos 0)) 36864.0) + (when (or (not *target*) (>= (vector-vector-xz-distance arg0 (target-pos 0)) 36864.0)) + (let ((v1-3 (new 'stack-no-clear 'vector))) + (set! (-> v1-3 quad) (-> arg0 quad)) + (set! (-> v1-3 w) (-> obj collide-info root-prim local-sphere w)) + ) + (if (not (TODO-RENAME-50 obj arg0)) + (return (the-as object #t)) + ) ) - (let ((v1-3 (new 'stack-no-clear 'vector))) - (set! (-> v1-3 quad) (-> arg0 quad)) - (set! (-> v1-3 w) (-> obj collide-info root-prim local-sphere w)) - ) - (if (not (TODO-RENAME-50 obj arg0)) - (return (the-as object #t)) - ) - ) #f ) (defmethod dummy-52 green-eco-lurker ((obj green-eco-lurker) (arg0 vector)) (let ((s4-0 (-> obj path curve num-cverts))) - (when (> s4-0 0) - (let ((s2-0 (nav-enemy-rnd-int-count s4-0)) - (s3-0 s4-0) + (when (> s4-0 0) + (let ((s2-0 (nav-enemy-rnd-int-count s4-0)) + (s3-0 s4-0) + ) + (while (> s3-0 0) + (eval-path-curve-div! (-> obj path) arg0 (the float s2-0) 'interp) + (if (dummy-51 obj arg0) + (return #t) + ) + (set! s2-0 (mod (+ s2-0 1) s4-0)) + (+! s3-0 -1) ) - (while (> s3-0 0) - (eval-path-curve-div! (-> obj path) arg0 (the float s2-0) 'interp) - (if (dummy-51 obj arg0) - (return #t) - ) - (set! s2-0 (mod (+ s2-0 1) s4-0)) - (+! s3-0 -1) + ) ) - ) ) - ) #f ) (defstate green-eco-lurker-tune-spheres (green-eco-lurker) :trans - (behavior () - 0 - (none) - ) + (behavior () 0 (none)) :code - (behavior () - 0 - (none) - ) + (behavior () 0 (none)) :post (the-as (function none :behavior green-eco-lurker) transform-post) ) @@ -498,288 +430,186 @@ (defstate green-eco-lurker-wait-to-appear (green-eco-lurker) :enter (behavior () - (logior! (-> self draw status) 2) - (clear-collide-with-as (-> self collide-info)) - (none) - ) + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self collide-info)) + (none) + ) :exit (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (restore-collide-with-as (-> self collide-info)) - (none) - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (restore-collide-with-as (-> self collide-info)) + (none) + ) :trans (behavior () - (if (dummy-52 self (-> self appear-dest)) - (go green-eco-lurker-appear) + (if (dummy-52 self (-> self appear-dest)) + (go green-eco-lurker-appear) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) + (while #t + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + ) + (none) ) - (none) - ) ) (defmethod dummy-53 green-eco-lurker ((obj green-eco-lurker)) - (the-as symbol (cond - ((and - (-> obj draw shadow) - (zero? (-> obj draw cur-lod)) - (logtest? (-> obj draw status) 8) - ) - (let ((f0-0 (-> obj appear-dest y)) - (v1-7 (-> obj draw shadow-ctrl)) - ) - (let ((a0-1 v1-7)) - (set! - (-> a0-1 settings flags) - (logand -33 (-> a0-1 settings flags)) - ) - ) - 0 - (let ((a0-3 v1-7)) - (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) - ) - 0 - (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) - ) - 0 - ) - (else - (let ((v1-9 (-> obj draw shadow-ctrl))) - (logior! (-> v1-9 settings flags) 32) - ) - 0 - ) - ) - ) + (the-as + symbol + (cond + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + (let ((f0-0 (-> obj appear-dest y)) + (v1-7 (-> obj draw shadow-ctrl)) + ) + (let ((a0-1 v1-7)) + (set! (-> a0-1 settings flags) (logand -33 (-> a0-1 settings flags))) + ) + 0 + (let ((a0-3 v1-7)) + (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) + ) + 0 + (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) + ) + 0 + ) + (else + (let ((v1-9 (-> obj draw shadow-ctrl))) + (logior! (-> v1-9 settings flags) 32) + ) + 0 + ) + ) + ) ) (defstate green-eco-lurker-appear (green-eco-lurker) :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self played-sound?) #f) - (set! (-> self sound-delay) (nav-enemy-rnd-int-range 30 150)) - (let - ((f0-1 - (- - (-> self appear-dest x) - (-> (the-as robotboss (-> self parent 0)) root-override trans x) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self played-sound?) #f) + (set! (-> self sound-delay) (nav-enemy-rnd-int-range 30 150)) + (let ((f0-1 (- (-> self appear-dest x) (-> (the-as robotboss (-> self parent 0)) root-override trans x)))) + (set! (-> self collide-info trans x) + (+ (-> (the-as robotboss (-> self parent 0)) root-override trans x) (fmax -32768.0 (fmin 32768.0 f0-1))) + ) ) - ) - (set! - (-> self collide-info trans x) - (+ - (-> (the-as robotboss (-> self parent 0)) root-override trans x) - (fmax -32768.0 (fmin 32768.0 f0-1)) - ) - ) - ) - (logior! (-> self collide-info nav-flags) 2) - (set! (-> self nav extra-nav-sphere quad) (-> self appear-dest quad)) - (set! (-> self nav extra-nav-sphere w) 8192.0) - (setup-from-to-duration! - (-> self traj) - (-> self collide-info trans) - (-> self appear-dest) - 225.0 - -9.102222 - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self collide-info trans quad)) - (set! (-> gp-0 y) (+ 8192.0 (-> gp-0 y))) - (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when s5-0 - (let ((t9-3 (method-of-type part-tracker activate))) - (t9-3 - (the-as part-tracker s5-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) + (logior! (-> self collide-info nav-flags) 2) + (set! (-> self nav extra-nav-sphere quad) (-> self appear-dest quad)) + (set! (-> self nav extra-nav-sphere w) 8192.0) + (setup-from-to-duration! (-> self traj) (-> self collide-info trans) (-> self appear-dest) 225.0 -9.102222) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info trans quad)) + (set! (-> gp-0 y) (+ 8192.0 (-> gp-0 y))) + (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-0 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 (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* 643) -1 #f #f #f gp-0) + (-> s5-0 ppointer) + ) ) - ) - (run-now-in-process - s5-0 - part-tracker-init - (-> *part-group-id-table* 643) - -1 - #f - #f - #f - gp-0 - ) - (-> s5-0 ppointer) ) - ) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self appear-dest) (-> self collide-info trans)) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 1.0) + (forward-up->quaternion (-> self collide-info quat) gp-1 *up-vector*) + ) + (none) ) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector-! gp-1 (-> self appear-dest) (-> self collide-info trans)) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 1.0) - (forward-up->quaternion (-> self collide-info quat) gp-1 *up-vector*) - ) - (none) - ) :trans (behavior () - (let - ((f30-0 - (fmin - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - (-> self traj time) - ) + (let ((f30-0 (fmin (the float (- (-> *display* base-frame-counter) (-> self state-time))) (-> self traj time)))) + (eval-position! (-> self traj) f30-0 (-> self collide-info trans)) + (when (= f30-0 (-> self traj time)) + (logior! (-> self collide-info nav-flags) 1) + (set! (-> self collide-info nav-flags) (logand -3 (-> self collide-info nav-flags))) + (go green-eco-lurker-appear-land) + ) ) - ) - (eval-position! (-> self traj) f30-0 (-> self collide-info trans)) - (when (= f30-0 (-> self traj time)) - (logior! (-> self collide-info nav-flags) 1) - (set! - (-> self collide-info nav-flags) - (logand -3 (-> self collide-info nav-flags)) + (when (and + (not (-> self played-sound?)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self sound-delay)) + ) + (set! (-> self played-sound?) #t) + (sound-play-by-name + (static-sound-name "blob-jump") + (new-sound-id) + 1024 + (the int (* 1524.0 (nav-enemy-rnd-float-range -0.5 0.5))) + 0 + 1 + #t + ) ) - (go green-eco-lurker-appear-land) - ) + (dummy-53 self) + 0 + (none) ) - (when - (and - (not (-> self played-sound?)) - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (-> self sound-delay) - ) - ) - (set! (-> self played-sound?) #t) - (sound-play-by-name - (static-sound-name "blob-jump") - (new-sound-id) - 1024 - (the int (* 1524.0 (nav-enemy-rnd-float-range -0.5 0.5))) - 0 - 1 - #t - ) - ) - (dummy-53 self) - 0 - (none) - ) :code (behavior () - (ja-channel-push! 1 60) - (sound-play-by-name - (static-sound-name "blob-out") - (new-sound-id) - 1024 - (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) - 0 - 1 - #t - ) - (cond - ((zero? (nav-enemy-rnd-int-count 2)) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 11)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 11)) - data - 0 - length - ) - -1 + (ja-channel-push! 1 60) + (sound-play-by-name + (static-sound-name "blob-out") + (new-sound-id) + 1024 + (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) + 0 + 1 + #t + ) + (cond + ((zero? (nav-enemy-rnd-int-count 2)) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 11))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) 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 11)) num-func-seek!) ) - ) - ) - (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 11)) - 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! - ) - ) - ) - ) - (else - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-7 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length - ) - -1 + (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!) + ) ) + ) + (else + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-7 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) 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 7)) 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!) + ) + ) ) - ) - (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 7)) - num-func-seek! - ) ) - (until (ja-done? 0) + (while #t + (logior! (-> self mask) (process-mask sleep-code)) (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! - ) - ) ) - ) + (none) ) - (while #t - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - (none) - ) :post (the-as (function none :behavior green-eco-lurker) transform-post) ) @@ -787,83 +617,57 @@ (defstate green-eco-lurker-appear-land (green-eco-lurker) :event (the-as - (function process int symbol event-message-block object :behavior green-eco-lurker) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior green-eco-lurker) + nav-enemy-default-event-handler + ) :code (behavior () - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (sound-play-by-name - (static-sound-name "blob-land") - (new-sound-id) - 1024 - (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) - 0 - 1 - #t - ) - (let ((v1-4 (-> self draw shadow-ctrl))) - (let ((a0-4 v1-4)) - (set! (-> a0-4 settings bot-plane w) (- -7168.0)) - ) - 0 - (let ((a0-6 v1-4)) - (set! (-> a0-6 settings top-plane w) (- 2048.0)) - ) - 0 - (set! (-> v1-4 settings flags) (logand -9 (-> v1-4 settings flags))) - (set! (-> v1-4 settings flags) (logand -5 (-> v1-4 settings flags))) - (set! (-> v1-4 settings flags) (logand -33 (-> v1-4 settings flags))) - ) - 0 - (ja-channel-push! 1 60) - (let ((a0-15 (-> self skel root-channel 0))) - (set! - (-> a0-15 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-15 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (sound-play-by-name + (static-sound-name "blob-land") + (new-sound-id) + 1024 + (the int (* 1524.0 (nav-enemy-rnd-float-range -1.0 1.0))) + 0 + 1 + #t + ) + (let ((v1-4 (-> self draw shadow-ctrl))) + (let ((a0-4 v1-4)) + (set! (-> a0-4 settings bot-plane w) (- -7168.0)) ) - -1 - ) + 0 + (let ((a0-6 v1-4)) + (set! (-> a0-6 settings top-plane w) (- 2048.0)) + ) + 0 + (set! (-> v1-4 settings flags) (logand -9 (-> v1-4 settings flags))) + (set! (-> v1-4 settings flags) (logand -5 (-> v1-4 settings flags))) + (set! (-> v1-4 settings flags) (logand -33 (-> v1-4 settings flags))) ) - ) - (set! (-> a0-15 param 1) 1.0) - (set! (-> a0-15 frame-num) 0.0) - (joint-control-channel-group! - a0-15 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) + 0 + (ja-channel-push! 1 60) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-15 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-15 param 1) 1.0) + (set! (-> a0-15 frame-num) 0.0) + (joint-control-channel-group! a0-15 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-16 (-> self skel root-channel 0))) + (set! (-> a0-16 param 0) (the float (+ (-> a0-16 frame-group data 0 length) -1))) + (set! (-> a0-16 param 1) 1.0) + (joint-control-channel-group-eval! a0-16 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (logior! (-> self nav-enemy-flags) 2) + (go-virtual nav-enemy-chase) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-16 (-> self skel root-channel 0))) - (set! - (-> a0-16 param 0) - (the float (+ (-> a0-16 frame-group data 0 length) -1)) - ) - (set! (-> a0-16 param 1) 1.0) - (joint-control-channel-group-eval! - a0-16 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (logior! (-> self nav-enemy-flags) 2) - (go-virtual nav-enemy-chase) - (none) - ) :post (the-as (function none :behavior green-eco-lurker) transform-post) ) @@ -872,322 +676,234 @@ :virtual #t :code (behavior () - (ja-channel-push! 1 60) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) + (ja-channel-push! 1 60) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) + (if t9-1 + ((the-as (function none) t9-1)) + ) + ) + (none) ) - (none) - ) ) (defstate nav-enemy-chase (green-eco-lurker) :virtual #t :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 8) - ) - (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! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (ja-channel-push! 1 60) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info run-anim)) - ) - ) - (set! - (-> a0-7 param 0) - (the - float - (+ - (-> - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info run-anim)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 8) ) - data - 0 - length + (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! a0-5 (the-as art-joint-anim #f) num-func-seek!) ) - -1 + (ja-channel-push! 1 60) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data (-> self nav-info run-anim)))) + (set! (-> a0-7 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self nav-info run-anim))) data 0 length) -1) + ) + ) + (set! (-> a0-7 param 1) f30-0) + (set! (-> a0-7 frame-num) 0.0) + (joint-control-channel-group! + a0-7 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info run-anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (ja-blend-eval) + (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) f30-0) + (joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (else + (ja-channel-push! 1 60) + (let ((v1-42 (-> self skel root-channel 0))) + (set! (-> v1-42 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info run-anim))) + ) + ) + (let ((v1-45 (-> self skel root-channel 0))) + (set! (-> v1-45 num-func) num-func-identity) + (set! (-> v1-45 frame-num) 0.0) + ) ) - ) ) - (set! (-> a0-7 param 1) f30-0) - (set! (-> a0-7 frame-num) 0.0) - (joint-control-channel-group! - a0-7 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info run-anim)) - ) - num-func-seek! + (while #t + (suspend) + (let ((a0-17 (-> self skel root-channel 0))) + (set! (-> a0-17 param 0) f30-0) + (joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-loop!) + ) ) - ) - (until (ja-done? 0) - (ja-blend-eval) - (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) f30-0) - (joint-control-channel-group-eval! - a0-8 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) ) - (else - (ja-channel-push! 1 60) - (let ((v1-42 (-> self skel root-channel 0))) - (set! - (-> v1-42 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info run-anim)) - ) - ) - ) - (let ((v1-45 (-> self skel root-channel 0))) - (set! (-> v1-45 num-func) num-func-identity) - (set! (-> v1-45 frame-num) 0.0) - ) - ) - ) - (while #t - (suspend) - (let ((a0-17 (-> self skel root-channel 0))) - (set! (-> a0-17 param 0) f30-0) - (joint-control-channel-group-eval! - a0-17 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-jump-land (green-eco-lurker) :virtual #t :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! - (-> a0-0 param 0) - (the float (+ (-> a0-0 frame-group data 0 length) -1)) - ) - (set! (-> a0-0 param 1) 1.0) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (ja-channel-push! 1 22) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info jump-land-anim)) + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1))) + (set! (-> a0-0 param 1) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) ) - ) - (set! (-> gp-0 param 0) (ja-aframe 32.0 0)) - (set! (-> gp-0 param 1) 0.5) - (set! (-> gp-0 frame-num) 0.0) - (joint-control-channel-group! - gp-0 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info jump-land-anim)) + (ja-channel-push! 1 22) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info jump-land-anim))) + ) + (set! (-> gp-0 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-0 param 1) 0.5) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! + gp-0 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info jump-land-anim))) + num-func-seek! + ) ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 32.0 0)) - (set! (-> gp-1 param 1) 0.5) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim #f) - num-func-seek! + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-1 param 1) 0.5) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) + (go-virtual nav-enemy-chase) + (none) ) - (go-virtual nav-enemy-chase) - (none) - ) ) (defstate nav-enemy-die (green-eco-lurker) :virtual #t :enter (behavior () - (send-event (ppointer->process (-> self parent)) 'blob-died) - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-2 (method-of-type part-tracker activate))) - (t9-2 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) + (send-event (ppointer->process (-> self parent)) 'blob-died) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-2 (method-of-type part-tracker activate))) + (t9-2 (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* 643) + -1 + #f + #f + #f + (-> self collide-info trans) + ) + (-> gp-0 ppointer) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 643) - -1 - #f - #f - #f - (-> self collide-info trans) + (sound-play-by-name (static-sound-name "blob-explode") (new-sound-id) 1024 0 0 1 #t) + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (let ((v1-14 (-> self draw shadow-ctrl))) + (logior! (-> v1-14 settings flags) 32) ) - (-> gp-0 ppointer) - ) - ) - (sound-play-by-name - (static-sound-name "blob-explode") - (new-sound-id) - 1024 0 - 0 - 1 - #t + (let ((t9-7 (-> (method-of-type nav-enemy nav-enemy-die) enter))) + (if t9-7 + (t9-7) + ) + ) + (none) ) - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (let ((v1-14 (-> self draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) 32) - ) - 0 - (let ((t9-7 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-7 - (t9-7) - ) - ) - (none) - ) ) (defmethod initialize-collision green-eco-lurker ((obj green-eco-lurker)) - (let - ((s5-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 transform-index) 4) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 1) + (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) + (append-prim s4-0 s3-0) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-1 collide-with) (the-as uint 16)) + (set! (-> s3-1 prim-core action) (the-as uint 1)) + (set! (-> s3-1 prim-core offense) 1) + (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) + (append-prim s4-0 s3-1) + ) + (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-2 collide-with) (the-as uint 16)) + (set! (-> s3-2 prim-core action) (the-as uint 1)) + (set! (-> s3-2 prim-core offense) 1) + (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) + (append-prim s4-0 s3-2) + ) + (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) + (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-3 collide-with) (the-as uint 16)) + (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 transform-index) 6) + (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s4-0 s3-3) + ) + (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) + (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-4 collide-with) (the-as uint 16)) + (set! (-> s3-4 prim-core offense) 2) + (set! (-> s3-4 transform-index) 4) + (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) + (append-prim s4-0 s3-4) + ) + (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) + (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-5 collide-with) (the-as uint 16)) + (set! (-> s3-5 prim-core offense) 2) + (set! (-> s3-5 transform-index) 12) + (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-5) + ) + (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) + (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-6 collide-with) (the-as uint 16)) + (set! (-> s3-6 prim-core offense) 2) + (set! (-> s3-6 transform-index) 16) + (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-6) + ) ) - ) + (set! (-> s5-0 nav-radius) 8192.0) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> obj collide-info) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 transform-index) 4) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) - (set-root-prim! s5-0 s4-0) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) - (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) - (append-prim s4-0 s3-0) - ) - (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) - (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) - (append-prim s4-0 s3-1) - ) - (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core offense) 1) - (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) - (append-prim s4-0 s3-2) - ) - (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) - (set! (-> s3-3 transform-index) 6) - (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s4-0 s3-3) - ) - (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core offense) 2) - (set! (-> s3-4 transform-index) 4) - (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) - (append-prim s4-0 s3-4) - ) - (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core offense) 2) - (set! (-> s3-5 transform-index) 12) - (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-5) - ) - (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-6 collide-with) (the-as uint 16)) - (set! (-> s3-6 prim-core offense) 2) - (set! (-> s3-6 transform-index) 16) - (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-6) - ) - ) - (set! (-> s5-0 nav-radius) 8192.0) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> obj collide-info) s5-0) - ) 0 (none) ) @@ -1195,10 +911,7 @@ (defmethod TODO-RENAME-48 green-eco-lurker ((obj green-eco-lurker)) (initialize-skeleton obj *green-eco-lurker-sg* '()) (set! (-> obj draw origin-joint-index) (the-as uint 3)) - (set! - (-> obj collide-info nav-flags) - (logand -2 (-> obj collide-info nav-flags)) - ) + (set! (-> obj collide-info nav-flags) (logand -2 (-> obj collide-info nav-flags))) (TODO-RENAME-45 obj *green-eco-lurker-nav-enemy-info*) (logior! (-> obj draw shadow-ctrl settings flags) 4) (set! (-> obj neck up) (the-as uint 0)) @@ -1208,9 +921,7 @@ (none) ) -(defbehavior - green-eco-lurker-init-by-other green-eco-lurker - ((arg0 entity) (arg1 green-eco-lurker-gen) (arg2 vector)) +(defbehavior green-eco-lurker-init-by-other green-eco-lurker ((arg0 entity) (arg1 green-eco-lurker-gen) (arg2 vector)) (initialize-collision self) (set! (-> self collide-info trans quad) (-> arg2 quad)) (vector-identity! (-> self collide-info scale)) @@ -1225,71 +936,58 @@ (defstate spawn-minions (green-eco-lurker-gen) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('blob-died) - (set! (-> self num-alive) (max 0 (+ (-> self num-alive) -1))) - (send-event (ppointer->process (-> self parent)) 'blob-died) + (case arg2 + (('blob-died) + (set! (-> self num-alive) (max 0 (+ (-> self num-alive) -1))) + (send-event (ppointer->process (-> self parent)) 'blob-died) + ) + (('blob-hit-jak) + (send-event (ppointer->process (-> self parent)) 'blob-hit-jak) + ) ) - (('blob-hit-jak) - (send-event (ppointer->process (-> self parent)) 'blob-hit-jak) - ) ) - ) :code (behavior () - (while (< (-> self num-spawned) (-> self num-to-spawn)) - (when (< (-> self num-alive) 3) - (when (nonzero? (-> self num-spawned)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (suspend) - ) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (set! (-> gp-0 y) (+ -16384.0 (-> gp-0 y))) - (let ((s5-0 (get-process *default-dead-pool* green-eco-lurker #x4000))) - (when s5-0 - (let ((t9-1 (method-of-type green-eco-lurker activate))) - (t9-1 - (the-as green-eco-lurker s5-0) - self - 'green-eco-lurker - (the-as pointer #x70004000) + (while (< (-> self num-spawned) (-> self num-to-spawn)) + (when (< (-> self num-alive) 3) + (when (nonzero? (-> self num-spawned)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (suspend) + ) ) - ) - (run-now-in-process - s5-0 - green-eco-lurker-init-by-other - (-> self entity) - self - gp-0 - ) - (-> s5-0 ppointer) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (set! (-> gp-0 y) (+ -16384.0 (-> gp-0 y))) + (let ((s5-0 (get-process *default-dead-pool* green-eco-lurker #x4000))) + (when s5-0 + (let ((t9-1 (method-of-type green-eco-lurker activate))) + (t9-1 (the-as green-eco-lurker s5-0) self 'green-eco-lurker (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 green-eco-lurker-init-by-other (-> self entity) self gp-0) + (-> s5-0 ppointer) + ) + ) + ) + (+! (-> self num-spawned) 1) + (+! (-> self num-alive) 1) ) - ) + (suspend) + ) + (while (> (-> self num-alive) 0) + (suspend) + ) + (send-event (ppointer->process (-> self parent)) 'trigger) + (until (not (-> self child)) + (suspend) ) - (+! (-> self num-spawned) 1) - (+! (-> self num-alive) 1) - ) (suspend) + 0 + (none) ) - (while (> (-> self num-alive) 0) - (suspend) - ) - (send-event (ppointer->process (-> self parent)) 'trigger) - (until (not (-> self child)) - (suspend) - ) - (suspend) - 0 - (none) - ) ) -(defbehavior - green-eco-lurker-gen-init-by-other green-eco-lurker-gen - ((arg0 entity) (arg1 vector) (arg2 int)) +(defbehavior green-eco-lurker-gen-init-by-other green-eco-lurker-gen ((arg0 entity) (arg1 vector) (arg2 int)) (set! (-> self num-to-spawn) arg2) (set! (-> self num-spawned) 0) (set! (-> self num-alive) 0) diff --git a/goal_src/levels/finalboss/robotboss-misc.gc b/goal_src/levels/finalboss/robotboss-misc.gc index e9ae07ddc4..8985405201 100644 --- a/goal_src/levels/finalboss/robotboss-misc.gc +++ b/goal_src/levels/finalboss/robotboss-misc.gc @@ -24,87 +24,76 @@ (defstate cam-robotboss (camera-slave) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('set-pivot) - (let ((v0-0 (the-as object (-> self pivot-pt)))) - (set! - (-> (the-as vector v0-0) quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - v0-0 + (case arg2 + (('set-pivot) + (let ((v0-0 (the-as object (-> self pivot-pt)))) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + v0-0 + ) ) + (('teleport) + #f + ) + (else + (cam-standard-event-handler arg0 arg1 arg2 arg3) + ) ) - (('teleport) - #f - ) - (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) - ) ) - ) :enter (behavior () - (cond - ((-> self enter-has-run) - ) - (else - (set! *camera-base-mode* cam-robotboss) - (set! (-> self circular-follow quad) (-> *camera* tpos-curr-adj quad)) - (set! (-> self pivot-rad) 73728.0) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) + (cond + ((-> self enter-has-run) + ) + (else + (set! *camera-base-mode* cam-robotboss) + (set! (-> self circular-follow quad) (-> *camera* tpos-curr-adj quad)) + (set! (-> self pivot-rad) 73728.0) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)) + ) + ) + (none) ) - (none) - ) :trans (behavior () - (when (zero? (logand (-> *camera* master-options) 2)) - (set! *camera-base-mode* cam-string) - (cam-slave-go cam-free-floating) + (when (zero? (logand (-> *camera* master-options) 2)) + (set! *camera-base-mode* cam-string) + (cam-slave-go cam-free-floating) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (when #t - (let ((a2-0 (new-stack-vector0))) - (vector-! a2-0 (-> *camera* tpos-curr-adj) (-> self pivot-pt)) - (vector-! - (-> self circular-follow) - (-> self circular-follow) - (-> self pivot-pt) - ) - (v-slrp3! - (-> self circular-follow) - (-> self circular-follow) - a2-0 - (-> *camera* local-down) - (* 182.04445 (-> *display* time-adjust-ratio)) - ) - ) - (vector+! - (-> self circular-follow) - (-> self circular-follow) - (-> self pivot-pt) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (-> self circular-follow) (-> self pivot-pt)) - (vector-flatten! gp-0 gp-0 (-> *camera* local-down)) - (let ((f0-3 (- (vector-length gp-0) (-> self pivot-rad)))) - (if (>= 0.0 f0-3) - (vector-reset! gp-0) - (vector-normalize! gp-0 f0-3) + (while #t + (when #t + (let ((a2-0 (new-stack-vector0))) + (vector-! a2-0 (-> *camera* tpos-curr-adj) (-> self pivot-pt)) + (vector-! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt)) + (v-slrp3! + (-> self circular-follow) + (-> self circular-follow) + a2-0 + (-> *camera* local-down) + (* 182.04445 (-> *display* time-adjust-ratio)) + ) + ) + (vector+! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (-> self circular-follow) (-> self pivot-pt)) + (vector-flatten! gp-0 gp-0 (-> *camera* local-down)) + (let ((f0-3 (- (vector-length gp-0) (-> self pivot-rad)))) + (if (>= 0.0 f0-3) + (vector-reset! gp-0) + (vector-normalize! gp-0 f0-3) + ) + ) + (vector+! (-> self trans) gp-0 (-> self pivot-pt)) + ) ) - ) - (vector+! (-> self trans) gp-0 (-> self pivot-pt)) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) ) (deftype ecoclaw-part-info (structure) @@ -144,134 +133,99 @@ (f30-0 (vector-y-angle gp-1)) (f0-1 (- 16384.0 (vector-x-angle gp-1))) ) - (set! (-> *part-id-table* 2727 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2727 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2729 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2729 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2726 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2726 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2720 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2720 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2722 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2722 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2719 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2719 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2734 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2734 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2736 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2736 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2733 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2733 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2741 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2741 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2743 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2743 init-specs 13 initial-valuef) f0-1) - (set! (-> *part-id-table* 2740 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2740 init-specs 13 initial-valuef) f0-1) - ) + (set! (-> *part-id-table* 2727 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2727 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2729 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2729 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2726 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2726 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2720 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2720 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2722 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2722 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2719 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2719 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2734 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2734 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2736 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2736 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2733 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2733 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2741 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2741 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2743 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2743 init-specs 13 initial-valuef) f0-1) + (set! (-> *part-id-table* 2740 init-specs 14 initial-valuef) f30-0) + (set! (-> *part-id-table* 2740 init-specs 13 initial-valuef) f0-1) + ) 0 (none) ) ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 79] -(defbehavior - ecoclaw-handler ecoclaw - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) +(defbehavior ecoclaw-handler ecoclaw ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'open) - (let ((gp-1 (-> arg3 param 0))) - (set! - (-> self particles 0 kind) - (the-as - basic - (if - (and - (nonzero? gp-1) - (type-type? (rtype-of gp-1) sparticle-launch-group) + (the-as + object + (cond + ((= v1-0 'open) + (let ((gp-1 (-> arg3 param 0))) + (set! (-> self particles 0 kind) + (the-as basic (if (and (nonzero? gp-1) (type-type? (rtype-of gp-1) sparticle-launch-group)) + gp-1 + ) ) - gp-1 - ) - ) - ) - ) - (set! - (-> self particles 0 trans quad) - (-> self root trans quad) - ) - (let ((f0-1 (+ 12288.0 (-> self particles 0 trans y)))) - (set! (-> self particles 0 trans y) f0-1) - f0-1 - ) - ) - ((= v1-0 'beam-on) - (let ((s5-0 (-> arg3 param 0))) - (set! - (-> self particles 1 kind) - (the-as - basic - (if - (and - (nonzero? s5-0) - (type-type? (rtype-of s5-0) sparticle-launch-group) + ) + ) + (set! (-> self particles 0 trans quad) (-> self root trans quad)) + (let ((f0-1 (+ 12288.0 (-> self particles 0 trans y)))) + (set! (-> self particles 0 trans y) f0-1) + f0-1 + ) + ) + ((= v1-0 'beam-on) + (let ((s5-0 (-> arg3 param 0))) + (set! (-> self particles 1 kind) + (the-as basic (if (and (nonzero? s5-0) (type-type? (rtype-of s5-0) sparticle-launch-group)) + s5-0 + ) ) - s5-0 - ) - ) - ) - ) - (set! - (-> self particles 1 trans quad) - (-> self root trans quad) - ) - (set! - (-> self particles 1 trans y) - (+ 24576.0 (-> self particles 1 trans y)) - ) - (let ((s5-1 (-> arg3 param 1))) - (set! - (-> self particles 2 kind) - (the-as - basic - (if - (and - (nonzero? s5-1) - (type-type? (rtype-of s5-1) sparticle-launch-group) + ) + ) + (set! (-> self particles 1 trans quad) (-> self root trans quad)) + (set! (-> self particles 1 trans y) (+ 24576.0 (-> self particles 1 trans y))) + (let ((s5-1 (-> arg3 param 1))) + (set! (-> self particles 2 kind) + (the-as basic (if (and (nonzero? s5-1) (type-type? (rtype-of s5-1) sparticle-launch-group)) + s5-1 + ) ) - s5-1 - ) - ) - ) - ) - (set! - (-> self particles 2 trans quad) - (-> (the-as vector (-> arg3 param 2)) quad) - ) - (let ((f0-5 (+ 81920.0 (-> self particles 2 trans y)))) - (set! (-> self particles 2 trans y) f0-5) - f0-5 - ) - ) - ((= v1-0 'beam-off) - (set! (-> self particles 1 kind) #f) - (set! (-> self particles 2 kind) #f) - (let - ((a0-10 (handle->process (-> self particles 1 tracker)))) - (if a0-10 - (deactivate a0-10) - ) - ) - (let - ((a0-14 (handle->process (-> self particles 2 tracker)))) - (if a0-14 - (deactivate a0-14) - ) - ) - ) - ) + ) + ) + (set! (-> self particles 2 trans quad) (-> (the-as vector (-> arg3 param 2)) quad)) + (let ((f0-5 (+ 81920.0 (-> self particles 2 trans y)))) + (set! (-> self particles 2 trans y) f0-5) + f0-5 + ) + ) + ((= v1-0 'beam-off) + (set! (-> self particles 1 kind) #f) + (set! (-> self particles 2 kind) #f) + (let ((a0-10 (handle->process (-> self particles 1 tracker)))) + (if a0-10 + (deactivate a0-10) + ) + ) + (let ((a0-14 (handle->process (-> self particles 2 tracker)))) + (if a0-14 + (deactivate a0-14) + ) + ) + ) + ) + ) ) - ) ) (defstate ecoclaw-activate (ecoclaw) @@ -279,139 +233,84 @@ ecoclaw-handler :trans (behavior () - (if (-> self particles 1 kind) - (draw-eco-beam - (the-as vector (&-> self stack 112)) - (the-as vector (&-> self stack 144)) - ) - ) - (dotimes (gp-0 2) - (cond - ((handle->process (-> self particles gp-0 tracker)) - (set! - (-> - (the-as part-tracker (-> self particles gp-0 tracker process 0)) - start-time + (if (-> self particles 1 kind) + (draw-eco-beam (the-as vector (&-> self stack 112)) (the-as vector (&-> self stack 144))) ) - (the-as uint (-> *display* base-frame-counter)) - ) - ) - ((-> self particles gp-0 kind) - (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) - (set! (-> self particles gp-0 tracker) (ppointer->handle (when s5-0 - (let - ((t9-2 - (method-of-type - part-tracker - activate - ) - ) - ) - (t9-2 - (the-as - part-tracker - s5-0 - ) - self - 'part-tracker - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - s5-0 - part-tracker-init - (-> - self - particles - gp-0 - kind - ) - -1 - ecoclaw-beam-particle-callback - (-> - self - ppointer - ) - #f - (&+ - (&-> - self - stack - 80 - ) - (* gp-0 32) - ) - ) - (-> - s5-0 - ppointer - ) - ) - ) + (dotimes (gp-0 2) + (cond + ((handle->process (-> self particles gp-0 tracker)) + (set! (-> (the-as part-tracker (-> self particles gp-0 tracker process 0)) start-time) + (the-as uint (-> *display* base-frame-counter)) + ) + ) + ((-> self particles gp-0 kind) + (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) + (set! (-> self particles gp-0 tracker) + (ppointer->handle (when s5-0 + (let ((t9-2 (method-of-type part-tracker activate))) + (t9-2 (the-as part-tracker s5-0) self 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + part-tracker-init + (-> self particles gp-0 kind) + -1 + ecoclaw-beam-particle-callback + (-> self ppointer) + #f + (&+ (&-> self stack 80) (* gp-0 32)) + ) + (-> s5-0 ppointer) + ) + ) + ) + ) + ) ) - ) ) - ) + (none) ) - (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 - ) + (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! + ) ) - ) - (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)) + (until (ja-done? 0) + (suspend) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) (the float (+ (-> a0-1 frame-group data 0 length) -1))) + (set! (-> a0-1 param 1) 1.0) + (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) + ) ) - (set! (-> 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) ) - (while #t - (suspend) - ) - (none) - ) :post (the-as (function none :behavior ecoclaw) ja-post) ) @@ -421,14 +320,14 @@ ecoclaw-handler :code (behavior () - (while #t - (if (-> self particles 0 kind) - (go ecoclaw-activate) - ) - (suspend) + (while #t + (if (-> self particles 0 kind) + (go ecoclaw-activate) + ) + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior ecoclaw) ja-post) ) @@ -438,9 +337,9 @@ (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *ecoclaw-sg* '()) (dotimes (v1-3 3) - (set! (-> obj particles v1-3 kind) #f) - (set! (-> obj particles v1-3 tracker) (the-as handle #f)) - ) + (set! (-> obj particles v1-3 kind) #f) + (set! (-> obj particles v1-3 tracker) (the-as handle #f)) + ) (set! *ecoclaw* (the-as (pointer ecoclaw) (process->ppointer obj))) (go ecoclaw-idle) (none) @@ -472,228 +371,151 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('open) - (let ((f0-0 (the-as float (-> arg3 param 0)))) - (set! (-> self part-opened) f0-0) - f0-0 + (case arg2 + (('open) + (let ((f0-0 (the-as float (-> arg3 param 0)))) + (set! (-> self part-opened) f0-0) + f0-0 + ) + ) + (('hide) + (go-virtual hidden) ) ) - (('hide) - (go-virtual hidden) - ) ) - ) :trans (the-as (function none :behavior silodoor) rider-trans) :code (behavior () - (while #t - (when (not (movie?)) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 param 0) - (* (-> self part-opened) (the float (ja-num-frames 0))) - ) - (set! (-> gp-0 param 1) 0.01) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (cond - ((< - 0.01 - (fabs - (- - (* (-> self part-opened) (the float (ja-num-frames 0))) - (ja-aframe-num 0) + (while #t + (when (not (movie?)) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 param 0) (* (-> self part-opened) (the float (ja-num-frames 0)))) + (set! (-> gp-0 param 1) 0.01) + (joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-seek!) + ) + (cond + ((< 0.01 (fabs (- (* (-> self part-opened) (the float (ja-num-frames 0))) (ja-aframe-num 0)))) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + ) + ((nonzero? (-> self sound)) + (stop! (-> self sound)) + ) ) - ) ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - ) - ((nonzero? (-> self sound)) - (stop! (-> self sound)) - ) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) :post (behavior () - (if - (and - (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 57344.0) - (not (ja-min? 0)) - ) - (rider-post) - (transform-post) + (if (and (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 57344.0) (not (ja-min? 0))) + (rider-post) + (transform-post) + ) + (none) ) - (none) - ) ) (defstate hidden (silodoor) :virtual #t :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) + (if (nonzero? (-> self sound)) + (stop! (-> self sound)) + ) + (logior! (-> self draw status) (draw-status drwf01)) + (ja-post) + (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) + (suspend) + ) + (logclear! (-> self draw status) (draw-status drwf01)) + (let ((v1-12 (-> self skel root-channel 0))) + (set! (-> v1-12 num-func) num-func-identity) + (set! (-> v1-12 frame-num) 0.0) + ) + (set! (-> self part-opened) 0.0) + (go-virtual idle) + (none) ) - (logior! (-> self draw status) 2) - (ja-post) - (while - (not - (task-closed? (game-task finalboss-movies) (task-status need-reminder-a)) - ) - (suspend) - ) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (let ((v1-12 (-> self skel root-channel 0))) - (set! (-> v1-12 num-func) num-func-identity) - (set! (-> v1-12 frame-num) 0.0) - ) - (set! (-> self part-opened) 0.0) - (go-virtual idle) - (none) - ) ) (defmethod init-from-entity! silodoor ((obj silodoor) (arg0 entity-actor)) - (let - ((s4-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 19)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 5) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 19)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 19)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 7) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-2) + ) + (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 19)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 6) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-3) + ) ) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 transform-index) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 19)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) 5) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 19)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) 4) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-1) - ) - (let - ((s2-2 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 19)) - (set! (-> s2-2 prim-core offense) 4) - (set! (-> s2-2 transform-index) 7) - (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-2) - ) - (let - ((s2-3 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 3) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 19)) - (set! (-> s2-3 prim-core offense) 4) - (set! (-> s2-3 transform-index) 6) - (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-3) - ) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *silodoor-sg* '()) (logior! (-> obj skel status) 1) (set! (-> obj root pause-adjust-distance) 1228800.0) - (set! - (-> obj sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "silo-moves") - :volume #x400 - :fo-max 80 - ) - (-> obj root trans) - ) - ) + (set! (-> obj sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "silo-moves") + :volume #x400 + :fo-max 80 + ) + (-> obj root trans) + ) + ) (logclear! (-> obj mask) (process-mask actor-pause crate enemy attackable)) (set! (-> obj part-opened) 0.0) (go (method-of-object obj idle)) @@ -720,79 +542,48 @@ (defbehavior robotboss-manipy-trans-hook robotboss () (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (-> self node-list data 7)) - (spawn (-> self part) gp-0) - ) + (vector<-cspace! gp-0 (-> self node-list data 7)) + (spawn (-> self part) gp-0) + ) 0 (none) ) (defmethod play-anim! finalbosscam ((obj finalbosscam) (arg0 symbol)) (when arg0 - (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) - (set! (-> obj robotboss) (ppointer->handle (when s5-0 - (let - ((t9-1 - (method-of-type - manipy - activate - ) - ) - ) - (t9-1 - (the-as manipy s5-0) - obj - 'manipy - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-0 - manipy-init - (-> obj root-override trans) - (-> obj entity) - *robotboss-sg* - #f - ) - (-> s5-0 ppointer) - ) - ) - ) - ) - (send-event (handle->process (-> obj robotboss)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> obj robotboss)) 'center-joint 3) - (send-event (handle->process (-> obj robotboss)) 'origin-joint-index 3) - (send-event - (handle->process (-> obj robotboss)) - 'trans-hook - robotboss-manipy-trans-hook - ) - (send-event - (handle->process (-> obj robotboss)) - 'eval - (lambda :behavior finalbosscam - () - (let ((v0-0 (create-launch-control (-> *part-group-id-table* 645) self))) - (set! (-> self part) v0-0) - v0-0 + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> obj robotboss) + (ppointer->handle + (when s5-0 + (let ((t9-1 (method-of-type manipy activate))) + (t9-1 (the-as manipy s5-0) obj 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 manipy-init (-> obj root-override trans) (-> obj entity) *robotboss-sg* #f) + (-> s5-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> obj robotboss)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> obj robotboss)) 'center-joint 3) + (send-event (handle->process (-> obj robotboss)) 'origin-joint-index 3) + (send-event (handle->process (-> obj robotboss)) 'trans-hook robotboss-manipy-trans-hook) + (send-event + (handle->process (-> obj robotboss)) + 'eval + (lambda :behavior finalbosscam () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 645) self))) + (set! (-> self part) v0-0) + v0-0 + ) + ) + ) + (let ((v1-43 (handle->process (-> obj robotboss)))) + (if v1-43 + (set! (-> (the-as robotboss v1-43) draw bounds w) 327680.0) + ) ) - ) ) - (let ((v1-43 (handle->process (-> obj robotboss)))) - (if v1-43 - (set! (-> (the-as robotboss v1-43) draw bounds w) 327680.0) - ) - ) - ) - (the-as - basic - (new 'static 'spool-anim - :name "finalbosscam-white-eco" - :index 3 - :parts 3 - :command-list '() - ) - ) + (the-as basic (new 'static 'spool-anim :name "finalbosscam-white-eco" :index 3 :parts 3 :command-list '())) ) (defmethod get-art-elem finalbosscam ((obj finalbosscam)) @@ -807,14 +598,14 @@ :virtual #t :exit (behavior () - (let ((a0-1 (handle->process (-> self robotboss)))) - (if a0-1 - (deactivate a0-1) - ) + (let ((a0-1 (handle->process (-> self robotboss)))) + (if a0-1 + (deactivate a0-1) + ) + ) + ((-> (method-of-type process-taskable play-anim) exit)) + (none) ) - ((-> (method-of-type process-taskable play-anim) exit)) - (none) - ) ) (defbehavior finalbosscam-init-by-other finalbosscam ((arg0 entity)) diff --git a/goal_src/levels/finalboss/robotboss-weapon.gc b/goal_src/levels/finalboss/robotboss-weapon.gc index 602f00ee20..533d30cb65 100644 --- a/goal_src/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/levels/finalboss/robotboss-weapon.gc @@ -25,44 +25,35 @@ ) -(defmethod - TODO-RENAME-10 - torus - ((obj torus) (arg0 collide-prim-core) (arg1 vector)) +(defmethod TODO-RENAME-10 torus ((obj torus) (arg0 collide-prim-core) (arg1 vector)) (let ((gp-0 (new 'stack-no-clear 'vector)) (s5-0 (new 'stack-no-clear 'vector)) (f30-0 (+ (-> obj radius-secondary) (-> arg0 world-sphere w))) ) - (vector-! gp-0 (the-as vector arg0) (-> obj origin)) - (vector-flatten! s5-0 gp-0 (-> obj axis)) - (vector-normalize! s5-0 (-> obj radius-primary)) - (vector-! arg1 gp-0 s5-0) - (< (vector-length-squared arg1) (* f30-0 f30-0)) - ) + (vector-! gp-0 (the-as vector arg0) (-> obj origin)) + (vector-flatten! s5-0 gp-0 (-> obj axis)) + (vector-normalize! s5-0 (-> obj radius-primary)) + (vector-! arg1 gp-0 s5-0) + (< (vector-length-squared arg1) (* f30-0 f30-0)) + ) ) (defmethod dummy-11 torus ((obj torus) (arg0 vector)) - (let - ((s4-0 (the-as collide-shape-prim-group (-> *target* control root-prim)))) - (when - (and - (logtest? (-> s4-0 prim-core collide-as) 16) - (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0) - ) - (countdown (s3-0 (-> s4-0 num-prims)) - (let ((v1-9 (-> s4-0 prims s3-0))) - (if - (and - (logtest? (-> v1-9 prim-core action) 1) - (logtest? (-> v1-9 prim-core collide-as) 16) - (TODO-RENAME-10 obj (-> v1-9 prim-core) arg0) + (let ((s4-0 (the-as collide-shape-prim-group (-> *target* control root-prim)))) + (when (and (logtest? (-> s4-0 prim-core collide-as) 16) (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0)) + (countdown (s3-0 (-> s4-0 num-prims)) + (let ((v1-9 (-> s4-0 prims s3-0))) + (if (and + (logtest? (-> v1-9 prim-core action) 1) + (logtest? (-> v1-9 prim-core collide-as) 16) + (TODO-RENAME-10 obj (-> v1-9 prim-core) arg0) + ) + (return #t) + ) + ) ) - (return #t) - ) ) - ) ) - ) #f ) @@ -83,44 +74,44 @@ (s2-0 (new 'stack-no-clear 'matrix)) (s1-0 (new 'stack-no-clear 'inline-array 'vector 8)) ) - (set-vector! s0-0 0.0 0.0 1.0 1.0) - (vector-flatten! s0-0 s0-0 (-> obj axis)) - (if (= (vector-normalize-ret-len! s0-0 1.0) 0.0) - (set-vector! s0-0 0.0 1.0 0.0 1.0) + (set-vector! s0-0 0.0 0.0 1.0 1.0) + (vector-flatten! s0-0 s0-0 (-> obj axis)) + (if (= (vector-normalize-ret-len! s0-0 1.0) 0.0) + (set-vector! s0-0 0.0 1.0 0.0 1.0) + ) + (vector-cross! s4-0 s0-0 (-> obj axis)) + (matrix-axis-angle! s2-0 s4-0 8192.0) + (vector-float*! (-> s1-0 0) s0-0 (-> obj radius-secondary)) + (set! sv-256 0) + (while (< sv-256 7) + (vector-matrix*! (-> s1-0 (+ sv-256 1)) (-> s1-0 sv-256) s2-0) + (set! sv-256 (+ sv-256 1)) + ) + (vector-float*! s0-0 s0-0 (-> obj radius-primary)) + (dotimes (v1-21 8) + (vector+! (-> s1-0 v1-21) (-> s1-0 v1-21) s0-0) + ) + (matrix-axis-angle! s2-0 (-> obj axis) 4096.0) + (dotimes (s0-1 16) + (set! sv-272 0) + (while (< sv-272 7) + (vector+! s4-0 (-> s1-0 sv-272) (-> obj origin)) + (vector+! s3-0 (-> s1-0 (+ sv-272 1)) (-> obj origin)) + (camera-line s4-0 s3-0 (the-as vector4w arg0)) + (set! sv-272 (+ sv-272 1)) + ) + (vector+! s4-0 (-> s1-0 0) (-> obj origin)) + (camera-line s4-0 s3-0 (the-as vector4w arg0)) + (set! sv-288 0) + (while (< sv-288 8) + (vector+! s4-0 (-> s1-0 sv-288) (-> obj origin)) + (vector-matrix*! (-> s1-0 sv-288) (-> s1-0 sv-288) s2-0) + (vector+! s3-0 (-> s1-0 sv-288) (-> obj origin)) + (camera-line s4-0 s3-0 (the-as vector4w arg0)) + (set! sv-288 (+ sv-288 1)) + ) + ) ) - (vector-cross! s4-0 s0-0 (-> obj axis)) - (matrix-axis-angle! s2-0 s4-0 8192.0) - (vector-float*! (-> s1-0 0) s0-0 (-> obj radius-secondary)) - (set! sv-256 0) - (while (< sv-256 7) - (vector-matrix*! (-> s1-0 (+ sv-256 1)) (-> s1-0 sv-256) s2-0) - (set! sv-256 (+ sv-256 1)) - ) - (vector-float*! s0-0 s0-0 (-> obj radius-primary)) - (dotimes (v1-21 8) - (vector+! (-> s1-0 v1-21) (-> s1-0 v1-21) s0-0) - ) - (matrix-axis-angle! s2-0 (-> obj axis) 4096.0) - (dotimes (s0-1 16) - (set! sv-272 0) - (while (< sv-272 7) - (vector+! s4-0 (-> s1-0 sv-272) (-> obj origin)) - (vector+! s3-0 (-> s1-0 (+ sv-272 1)) (-> obj origin)) - (camera-line s4-0 s3-0 (the-as vector4w arg0)) - (set! sv-272 (+ sv-272 1)) - ) - (vector+! s4-0 (-> s1-0 0) (-> obj origin)) - (camera-line s4-0 s3-0 (the-as vector4w arg0)) - (set! sv-288 0) - (while (< sv-288 8) - (vector+! s4-0 (-> s1-0 sv-288) (-> obj origin)) - (vector-matrix*! (-> s1-0 sv-288) (-> s1-0 sv-288) s2-0) - (vector+! s3-0 (-> s1-0 sv-288) (-> obj origin)) - (camera-line s4-0 s3-0 (the-as vector4w arg0)) - (set! sv-288 (+ sv-288 1)) - ) - ) - ) 0 (none) ) @@ -131,29 +122,25 @@ (v1-2 (the-as number (logior #x3f800000 v1-1))) (f30-1 (* f30-0 (+ -1.0 (the-as float v1-2)))) ) - (set! (-> arg0 x) 0.0) - (set! (-> arg0 y) (* (-> obj radius-secondary) (sin f30-1))) - (set! (-> arg0 z) (* (-> obj radius-secondary) (cos f30-1))) - ) + (set! (-> arg0 x) 0.0) + (set! (-> arg0 y) (* (-> obj radius-secondary) (sin f30-1))) + (set! (-> arg0 z) (* (-> obj radius-secondary) (cos f30-1))) + ) (+! (-> arg0 z) (-> obj radius-primary)) (set! (-> arg0 w) 0.0) (let ((s2-0 (new 'stack-no-clear 'matrix))) - (let* ((s4-0 matrix-rotate-y!) - (s3-0 s2-0) - (f30-2 65536.0) - (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-7 (the-as number (logior #x3f800000 v1-6))) - ) - (s4-0 s3-0 (* f30-2 (+ -1.0 (the-as float v1-7)))) + (let* ((s4-0 matrix-rotate-y!) + (s3-0 s2-0) + (f30-2 65536.0) + (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-7 (the-as number (logior #x3f800000 v1-6))) + ) + (s4-0 s3-0 (* f30-2 (+ -1.0 (the-as float v1-7)))) + ) + (vector-matrix*! arg0 arg0 s2-0) + (matrix-from-two-vectors! s2-0 (new 'static 'vector :y 1.0 :w 1.0) (-> obj axis)) + (vector-matrix*! arg0 arg0 s2-0) ) - (vector-matrix*! arg0 arg0 s2-0) - (matrix-from-two-vectors! - s2-0 - (new 'static 'vector :y 1.0 :w 1.0) - (-> obj axis) - ) - (vector-matrix*! arg0 arg0 s2-0) - ) (vector+! arg0 arg0 (-> obj origin)) arg0 ) @@ -172,71 +159,62 @@ ) -(defbehavior - arcing-shot-setup arcing-shot - ((arg0 vector) (arg1 vector) (arg2 float)) +(defbehavior arcing-shot-setup arcing-shot ((arg0 vector) (arg1 vector) (arg2 float)) (set! (-> self from quad) (-> arg0 quad)) (set! (-> self to quad) (-> arg1 quad)) (let ((v1-2 (fmax 1.0 arg2))) - (if (< (-> arg0 y) (-> arg1 y)) - (set! v1-2 (+ v1-2 (- (-> arg1 y) (-> arg0 y)))) + (if (< (-> arg0 y) (-> arg1 y)) + (set! v1-2 (+ v1-2 (- (-> arg1 y) (-> arg0 y)))) + ) + (let ((f0-6 (* -4.0 v1-2)) + (f3-1 (* 4.0 v1-2 (- (-> arg1 y) (-> arg0 y)))) + ) + (set! (-> self y-vel) (* 0.5 (- (sqrtf (- (* f0-6 f0-6) (* 4.0 f3-1))) f0-6))) + ) + (let ((f0-12 (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2)))) + (set! (-> self grav) f0-12) + f0-12 + ) ) - (let ((f0-6 (* -4.0 v1-2)) - (f3-1 (* 4.0 v1-2 (- (-> arg1 y) (-> arg0 y)))) - ) - (set! - (-> self y-vel) - (* 0.5 (- (sqrtf (- (* f0-6 f0-6) (* 4.0 f3-1))) f0-6)) - ) - ) - (let ((f0-12 (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2)))) - (set! (-> self grav) f0-12) - f0-12 - ) - ) ) (defbehavior arcing-shot-calculate arcing-shot ((arg0 vector) (arg1 float)) (let ((s5-0 (fmin 1.0 (fmax 0.0 arg1)))) - (vector-lerp! arg0 (-> self from) (-> self to) s5-0) - (set! (-> arg0 y) (-> self from y)) - (+! (-> arg0 y) (* (-> self y-vel) s5-0)) - (let ((f0-6 (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav))))) - (set! (-> arg0 y) f0-6) - f0-6 + (vector-lerp! arg0 (-> self from) (-> self to) s5-0) + (set! (-> arg0 y) (-> self from y)) + (+! (-> arg0 y) (* (-> self y-vel) s5-0)) + (let ((f0-6 (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav))))) + (set! (-> arg0 y) f0-6) + f0-6 + ) ) - ) ) (defbehavior arcing-shot-draw arcing-shot () (let ((gp-0 (new 'stack-no-clear 'vector)) (s5-0 (new 'stack-no-clear 'vector)) ) - (set! (-> s5-0 quad) (-> self from quad)) - (dotimes (s4-0 30) - (arcing-shot-calculate gp-0 (* 0.033333335 (the float (+ s4-0 1)))) - (camera-line gp-0 s5-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) - (set! (-> s5-0 quad) (-> gp-0 quad)) + (set! (-> s5-0 quad) (-> self from quad)) + (dotimes (s4-0 30) + (arcing-shot-calculate gp-0 (* 0.033333335 (the float (+ s4-0 1)))) + (camera-line gp-0 s5-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) + (set! (-> s5-0 quad) (-> gp-0 quad)) + ) ) - ) #f ) (defstate arcing-shot-debug-trajectory (arcing-shot) :trans - (behavior () - (arcing-shot-setup (camera-pos) (-> self entity extra trans) 40960.0) - (arcing-shot-draw) - (none) - ) + (behavior () (arcing-shot-setup (camera-pos) (-> self entity extra trans) 40960.0) (arcing-shot-draw) (none)) :code (behavior () - (while #t - (format *stdcon* "debug trajectory~%") - (suspend) + (while #t + (format *stdcon* "debug trajectory~%") + (suspend) + ) + (none) ) - (none) - ) ) (deftype darkecobomb (arcing-shot) @@ -263,107 +241,81 @@ (defstate darkecobomb-explode (darkecobomb) :code (behavior ((arg0 symbol)) - (send-event *target* 'reset-pickup 'eco) - (sound-play-by-name - (static-sound-name "explod-bomb") - (new-sound-id) - 1024 - 0 - 0 - 1 - #f - ) - (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) - (send-event (ppointer->process (-> self parent)) 'flash 255.0) - (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) - (when s5-1 - (let ((t9-6 (method-of-type part-tracker activate))) - (t9-6 - (the-as part-tracker s5-1) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) + (send-event *target* 'reset-pickup 'eco) + (sound-play-by-name (static-sound-name "explod-bomb") (new-sound-id) 1024 0 0 1 #f) + (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) + (send-event (ppointer->process (-> self parent)) 'flash 255.0) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 (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* 619) + 900 + #f + #f + #f + (-> self root-override trans) + ) + (-> s5-1 ppointer) + ) + ) + (logior! (-> self draw status) (draw-status drwf01)) + (cond + ((or arg0 (and *target* (< (-> (target-pos 0) y) (+ 40960.0 (-> self entity extra trans y))))) + (if *target* + (logior! (-> *target* mask) (process-mask sleep)) + ) + (send-event (ppointer->process (-> self parent)) 'bomb-going) + (send-event *camera* 'change-to-entity-by-name "camera-402") + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600) + (suspend) + ) + (send-event *camera* 'force-blend 0) + (send-event *camera* 'change-state *camera-base-mode*) + (send-event *camera* 'clear-entity) + (if *target* + (logclear! (-> *target* mask) (process-mask sleep)) + ) + (let ((a1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-12 from) self) + (set! (-> a1-12 num-params) 2) + (set! (-> a1-12 message) 'attack-invinc) + (set! (-> a1-12 param 0) (the-as uint #f)) + (let ((a0-21 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-21 mode) 'instant-death) + (set! (-> a1-12 param 1) (the-as uint a0-21)) + ) + (send-event-function *target* a1-12) + ) ) + (else + (send-event (ppointer->process (-> self parent)) 'bomb-done) + ) ) - (run-now-in-process - s5-1 - part-tracker-init - (-> *part-group-id-table* 619) - 900 - #f - #f - #f - (-> self root-override trans) - ) - (-> s5-1 ppointer) - ) + (deactivate self) + (none) ) - (logior! (-> self draw status) 2) - (cond - ((or - arg0 - (and - *target* - (< (-> (target-pos 0) y) (+ 40960.0 (-> self entity extra trans y))) - ) - ) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (send-event (ppointer->process (-> self parent)) 'bomb-going) - (send-event *camera* 'change-to-entity-by-name "camera-402") - (set! (-> self state-time) (-> *display* base-frame-counter)) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600) - (suspend) - ) - (send-event *camera* 'force-blend 0) - (send-event *camera* 'change-state *camera-base-mode*) - (send-event *camera* 'clear-entity) - (if *target* - (logclear! (-> *target* mask) (process-mask sleep)) - ) - (let ((a1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-12 from) self) - (set! (-> a1-12 num-params) 2) - (set! (-> a1-12 message) 'attack-invinc) - (set! (-> a1-12 param 0) (the-as uint #f)) - (let ((a0-21 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-21 mode) 'instant-death) - (set! (-> a1-12 param 1) (the-as uint a0-21)) - ) - (send-event-function *target* a1-12) - ) - ) - (else - (send-event (ppointer->process (-> self parent)) 'bomb-done) - ) - ) - (deactivate self) - (none) - ) :post (the-as (function none :behavior darkecobomb) ja-post) ) -(defbehavior - darkecobomb-handler darkecobomb - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch 'attack) +(defbehavior darkecobomb-handler darkecobomb ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch 'attack) (go darkecobomb-explode #t) ) - ) + ) ) (defbehavior darkecobomb-explode-if-player-high-enough darkecobomb () - (if - (and - (not (movie?)) - *target* - (< (+ 409600.0 (-> self entity extra trans y)) (-> (target-pos 0) y)) - ) - (go darkecobomb-explode #f) - ) + (if (and (not (movie?)) *target* (< (+ 409600.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) + (go darkecobomb-explode #f) + ) (none) ) @@ -372,192 +324,107 @@ darkecobomb-handler :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self next-tick) 0.9) - (none) - ) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (set! (-> self next-tick) 0.9) + (none) + ) :exit - (behavior () - (stop! (-> self sound)) - (none) - ) + (behavior () (stop! (-> self sound)) (none)) :trans (behavior () - (darkecobomb-explode-if-player-high-enough) - (let - ((f0-1 - (fmax - 0.0 - (/ - (- - (-> self countdown-time) - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - ) - (-> self countdown-time) - ) - ) - ) - ) - (let ((f1-5 (* (- 1.0 f0-1) (- 1.0 f0-1)))) - (set! (-> self anim-speed) (+ 1.0 f1-5)) - ) - (when (< (cos (* 16384.0 (- 1.0 f0-1))) (-> self next-tick)) - (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* 663) - 150 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-0 ppointer) - ) - ) - (set! (-> self next-tick) (+ -0.06 (-> self next-tick))) - (sound-play-by-name - (static-sound-name "robo-warning") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - ) - (if - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (the int (-> self countdown-time)) - ) - (go darkecobomb-explode #f) - ) - (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) + (darkecobomb-explode-if-player-high-enough) + (let ((f0-1 + (fmax + 0.0 + (/ (- (-> self countdown-time) (the float (- (-> *display* game-frame-counter) (-> self state-time)))) + (-> self countdown-time) + ) + ) + ) ) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-2 (-> self node-list data 5)) - (spawn (-> self part) gp-2) - ) + (let ((f1-5 (* (- 1.0 f0-1) (- 1.0 f0-1)))) + (set! (-> self anim-speed) (+ 1.0 f1-5)) + ) + (when (< (cos (* 16384.0 (- 1.0 f0-1))) (-> self next-tick)) + (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* 663) + 150 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (set! (-> self next-tick) (+ -0.06 (-> self next-tick))) + (sound-play-by-name (static-sound-name "robo-warning") (new-sound-id) 1024 0 0 1 #t) + ) + ) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (the int (-> self countdown-time))) + (go darkecobomb-explode #f) + ) + (when (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-2 (-> self node-list data 5)) + (spawn (-> self part) gp-2) + ) + ) + (none) ) - (none) - ) :code (behavior () - (sound-play-by-name - (static-sound-name "bomb-open") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 4)) - data - 0 - length - ) - -1 - ) + (sound-play-by-name (static-sound-name "bomb-open") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) ) - ) - (set! (-> a0-2 param 1) 1.0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 param 0) - (the float (+ (-> a0-3 frame-group data 0 length) -1)) - ) - (set! (-> a0-3 param 1) 1.0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (while #t - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-5 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-5 param 1) (-> self anim-speed)) - (set! (-> a0-5 frame-num) 0.0) - (joint-control-channel-group! - a0-5 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) - ) (until (ja-done? 0) - (update! (-> self sound)) - (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) (-> self anim-speed)) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) + (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!) + ) ) - ) + (while #t + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-5 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-5 param 1) (-> self anim-speed)) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (update! (-> self sound)) + (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) (-> self anim-speed)) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior darkecobomb) transform-post) ) @@ -566,269 +433,150 @@ :event darkecobomb-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - 0 - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) 0 (none)) :trans (behavior () - (darkecobomb-explode-if-player-high-enough) - (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) 150) - (go darkecobomb-countdown) + (darkecobomb-explode-if-player-high-enough) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) 150) + (go darkecobomb-countdown) + ) + (none) ) - (none) - ) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! - (-> a0-0 param 0) - (the float (+ (-> a0-0 frame-group data 0 length) -1)) - ) - (set! (-> a0-0 param 1) 1.0) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (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)) + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1))) + (set! (-> a0-0 param 1) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - data - 0 - length - ) - -1 + (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) 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!) + ) ) - ) ) - (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! - ) - ) - ) + (none) ) - (none) - ) :post (the-as (function none :behavior darkecobomb) transform-post) ) (defstate darkecobomb-idle (darkecobomb) :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) :trans (behavior () - (arcing-shot-calculate - (-> self root-override trans) - (/ - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - (the float (-> self flight-time)) - ) + (arcing-shot-calculate + (-> self root-override trans) + (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time))) + ) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) + (go darkecobomb-land) + ) + (none) ) - (if - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (-> self flight-time) - ) - (go darkecobomb-land) - ) - (none) - ) :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 3)) - ) - (set! - (-> a0-0 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length - ) - -1 - ) + (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!) ) - ) - (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! - ) - ) - ) - (while #t - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> a0-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - 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 2)) - 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! - ) + (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 + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> a0-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) 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 2)) 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!) + ) + ) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior darkecobomb) transform-post) ) -(defbehavior - darkecobomb-init-by-other darkecobomb - ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int) (arg4 float)) - (let - ((s1-0 - (new - 'process - 'collide-shape-moving - self - (collide-list-enum usually-hit-by-player) +(defbehavior darkecobomb-init-by-other darkecobomb ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int) (arg4 float)) + (let ((s1-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) + (set! (-> s1-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s1-0 reaction) default-collision-reaction) + (set! (-> s1-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) + (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s0-0 collide-with) (the-as uint 16)) + (set! (-> s0-0 prim-core action) (the-as uint 1)) + (set! (-> s0-0 prim-core offense) 4) + (set! (-> s0-0 transform-index) 3) + (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s1-0 s0-0) ) - ) + (set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w))) + (backup-collide-with-as s1-0) + (set! (-> self root-override) s1-0) ) - (set! (-> s1-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s1-0 reaction) default-collision-reaction) - (set! - (-> s1-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) - (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s0-0 collide-with) (the-as uint 16)) - (set! (-> s0-0 prim-core action) (the-as uint 1)) - (set! (-> s0-0 prim-core offense) 4) - (set! (-> s0-0 transform-index) 3) - (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s1-0 s0-0) - ) - (set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w))) - (backup-collide-with-as s1-0) - (set! (-> self root-override) s1-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *darkecobomb-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 639) self) - ) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 639) self)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self countdown-time) arg4) (set! (-> self flight-time) arg3) - (set! - (-> self sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "bomb-spin") - :volume #x400 - :fo-max 80 - ) - (-> self to) - ) - ) + (set! (-> self sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "bomb-spin") + :volume #x400 + :fo-max 80 + ) + (-> self to) + ) + ) (go darkecobomb-idle) (none) ) @@ -853,129 +601,88 @@ (defstate greenshot-idle (greenshot) :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) :trans (behavior () - (arcing-shot-calculate - (-> self root-override trans) - (/ - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - (the float (-> self flight-time)) - ) + (arcing-shot-calculate + (-> self root-override trans) + (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time))) + ) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) + (deactivate self) + ) + (spawn (-> self part) (-> self root-override trans)) + (none) ) - (if - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (-> self flight-time) - ) - (deactivate self) - ) - (spawn (-> self part) (-> self root-override trans)) - (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) - ) + (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!) + ) + ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior greenshot) transform-post) ) -(defbehavior - greenshot-init-by-other greenshot - ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 float)) - (let - ((s2-0 - (new - 'process - 'collide-shape-moving - self - (collide-list-enum usually-hit-by-player) +(defbehavior greenshot-init-by-other greenshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 float)) + (let ((s2-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) + (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s2-0 reaction) default-collision-reaction) + (set! (-> s2-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) + (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s1-0 collide-with) (the-as uint 16)) + (set! (-> s1-0 prim-core offense) 4) + (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) + (set-root-prim! s2-0 s1-0) ) - ) + (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) + (backup-collide-with-as s2-0) + (set! (-> self root-override) s2-0) ) - (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s2-0 reaction) default-collision-reaction) - (set! - (-> s2-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core offense) 4) - (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) - (set-root-prim! s2-0 s1-0) - ) - (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (backup-collide-with-as s2-0) - (set! (-> self root-override) s2-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *greenshot-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) (the-as int arg3)) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 664) self) - ) - (logior! (-> self draw status) 2) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 664) self)) + (logior! (-> self draw status) (draw-status drwf01)) (go greenshot-idle) (none) ) @@ -998,32 +705,31 @@ (defmethod relocate redshot ((obj redshot) (arg0 int)) (if (nonzero? (-> obj shot-particle)) - (&+! (-> obj shot-particle) arg0) - ) + (&+! (-> obj shot-particle) arg0) + ) (if (nonzero? (-> obj test-particle)) - (&+! (-> obj test-particle) arg0) - ) + (&+! (-> obj test-particle) arg0) + ) (the-as redshot ((method-of-type arcing-shot relocate) obj arg0)) ) (defmethod deactivate redshot ((obj redshot)) (if (nonzero? (-> obj shot-particle)) - (kill-and-free-particles (-> obj shot-particle)) - ) + (kill-and-free-particles (-> obj shot-particle)) + ) (if (nonzero? (-> obj test-particle)) - (kill-and-free-particles (-> obj test-particle)) - ) + (kill-and-free-particles (-> obj test-particle)) + ) ((method-of-type arcing-shot deactivate) obj) (none) ) (defun redshot-particle-callback ((arg0 part-tracker)) (let ((v1-0 (the-as object (-> arg0 userdata)))) - (set! - (-> *part-id-table* 2626 init-specs 2 initial-valuef) - (* 2.25 (-> (the-as (pointer redshot) v1-0) 0 ring radius-primary)) + (set! (-> *part-id-table* 2626 init-specs 2 initial-valuef) + (* 2.25 (-> (the-as (pointer redshot) v1-0) 0 ring radius-primary)) + ) ) - ) 0 (none) ) @@ -1038,193 +744,137 @@ (defbehavior redshot-trans redshot ((arg0 int)) (let ((s5-0 (new 'stack-no-clear 'matrix))) - 0.0 - (matrix-rotate-yx! - s5-0 - (* - 436.90668 - (the float (+ (-> self rotation-offset) (-> *display* game-frame-counter))) - ) - (* - 291.27112 - (the float (+ (-> self rotation-offset) (-> *display* game-frame-counter))) - ) + 0.0 + (matrix-rotate-yx! + s5-0 + (* 436.90668 (the float (+ (-> self rotation-offset) (-> *display* game-frame-counter)))) + (* 291.27112 (the float (+ (-> self rotation-offset) (-> *display* game-frame-counter)))) + ) + (matrix->quaternion (-> self root-override quat) s5-0) ) - (matrix->quaternion (-> self root-override quat) s5-0) - ) (if (< (* 0.006666667 (the float (min 150 arg0))) 1.0) - (spawn (-> self part) (-> self root-override trans)) - ) + (spawn (-> self part) (-> self root-override trans)) + ) ) (defstate redshot-explode (redshot) :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (sound-play-by-name - (static-sound-name "red-explode") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (quaternion-identity! (-> self root-override quat)) - (set! (-> self ring radius-secondary) 3072.0) - (set! (-> self ring origin quad) (-> self root-override trans quad)) - (+! (-> self ring origin y) (-> self ring radius-secondary)) - (set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0) - (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) - (set! (-> self part-track) (ppointer->handle (when gp-1 - (let - ((t9-4 - (method-of-type - part-tracker - activate - ) - ) - ) - (t9-4 - (the-as part-tracker gp-1) - self - 'part-tracker - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-1 - part-tracker-init - (-> - *part-group-id-table* - 648 - ) - -1 - redshot-particle-callback - (-> self ppointer) - #f - (-> self root-override trans) - ) - (-> gp-1 ppointer) - ) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (sound-play-by-name (static-sound-name "red-explode") (new-sound-id) 1024 0 0 1 #t) + (logclear! (-> self draw status) (draw-status drwf01)) + (quaternion-identity! (-> self root-override quat)) + (set! (-> self ring radius-secondary) 3072.0) + (set! (-> self ring origin quad) (-> self root-override trans quad)) + (+! (-> self ring origin y) (-> self ring radius-secondary)) + (set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (set! (-> self part-track) + (ppointer->handle (when gp-1 + (let ((t9-4 (method-of-type part-tracker activate))) + (t9-4 (the-as part-tracker gp-1) self 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 648) + -1 + redshot-particle-callback + (-> self ppointer) + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) ) - ) + ) + ) + ) + (none) ) - (none) - ) :trans (behavior () - (set! - (-> self ring radius-primary) - (* - 204.8 - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - ) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (when (dummy-11 (-> self ring) gp-0) - (vector-normalize! gp-0 16384.0) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (the-as uint #f)) - (let ((v1-8 (new 'static 'attack-info :mask #x2))) - (set! (-> v1-8 vector quad) (-> gp-0 quad)) - (set! (-> a1-2 param 1) (the-as uint v1-8)) - ) - (send-event-function *target* a1-2) - ) - (send-event (ppointer->process (-> self parent)) 'hit-jak) - ) - ) - (dotimes (gp-1 5) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (dummy-12 (-> self ring) s5-0) - (spawn (-> self test-particle) s5-0) - ) - ) - (let - ((f0-3 - (fmin - 1.0 - (* - 0.006666667 - (the - float - (- 600 (- (-> *display* game-frame-counter) (-> self state-time))) - ) + (set! (-> self ring radius-primary) + (* 204.8 (the float (- (-> *display* game-frame-counter) (-> self state-time)))) + ) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (when (dummy-11 (-> self ring) gp-0) + (vector-normalize! gp-0 16384.0) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (the-as uint #f)) + (let ((v1-8 (new 'static 'attack-info :mask #x2))) + (set! (-> v1-8 vector quad) (-> gp-0 quad)) + (set! (-> a1-2 param 1) (the-as uint v1-8)) + ) + (send-event-function *target* a1-2) + ) + (send-event (ppointer->process (-> self parent)) 'hit-jak) ) - ) ) - ) - (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 0.75) + (dotimes (gp-1 5) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (dummy-12 (-> self ring) s5-0) + (spawn (-> self test-particle) s5-0) + ) + ) + (let ((f0-3 + (fmin 1.0 (* 0.006666667 (the float (- 600 (- (-> *display* game-frame-counter) (-> self state-time)))))) + ) + ) + (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 0.75) + ) + (when (>= (- (-> *display* game-frame-counter) (-> self state-time)) 600) + (send-event (ppointer->process (-> self parent)) 'missed-jak) + (deactivate self) + ) + (none) ) - (when (>= (- (-> *display* game-frame-counter) (-> self state-time)) 600) - (send-event (ppointer->process (-> self parent)) 'missed-jak) - (deactivate self) - ) - (none) - ) :code (behavior () - (while #t - (let ((v1-2 (-> self skel root-channel 0))) - (set! (-> v1-2 num-func) num-func-identity) - (set! (-> v1-2 frame-num) (* 0.000016276043 (-> self ring radius-primary))) - ) - (suspend) + (while #t + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 num-func) num-func-identity) + (set! (-> v1-2 frame-num) (* 0.000016276043 (-> self ring radius-primary))) + ) + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior redshot) transform-post) ) -(defbehavior - redshot-handler redshot - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('attack 'touch) +(defbehavior redshot-handler redshot ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack 'touch) (go redshot-explode) ) - ) + ) ) (defstate redshot-wait (redshot) :event redshot-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) :trans (behavior () - (redshot-trans - (- - (-> self stall-time) - (- (-> *display* game-frame-counter) (-> self state-time)) - ) + (redshot-trans (- (-> self stall-time) (- (-> *display* game-frame-counter) (-> self state-time)))) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self stall-time)) + (go redshot-explode) + ) + (spawn (-> self shot-particle) (-> self root-override trans)) + (none) ) - (if - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (-> self stall-time) - ) - (go redshot-explode) - ) - (spawn (-> self shot-particle) (-> self root-override trans)) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior redshot) transform-post) ) @@ -1233,76 +883,51 @@ :event redshot-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) :trans (behavior () - (redshot-trans 1500) - (arcing-shot-calculate - (-> self root-override trans) - (/ - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - (the float (-> self flight-time)) - ) + (redshot-trans 1500) + (arcing-shot-calculate + (-> self root-override trans) + (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time))) + ) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) + (go redshot-wait) + ) + (spawn (-> self shot-particle) (-> self root-override trans)) + (none) ) - (if - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (-> self flight-time) - ) - (go redshot-wait) - ) - (spawn (-> self shot-particle) (-> self root-override trans)) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior redshot) transform-post) ) -(defbehavior - redshot-init-by-other redshot - ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 uint) (arg5 uint)) +(defbehavior redshot-init-by-other redshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 uint) (arg5 uint)) (local-vars (sv-16 collide-shape-prim-sphere)) - (let - ((s0-0 - (new - 'process - 'collide-shape-moving - self - (collide-list-enum usually-hit-by-player) - ) - ) + (let ((s0-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) + (set! (-> s0-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s0-0 reaction) default-collision-reaction) + (set! (-> s0-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) + (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) + (set! (-> sv-16 collide-with) (the-as uint 16)) + (set! (-> sv-16 prim-core action) (the-as uint 1)) + (set! (-> sv-16 prim-core offense) 4) + (set! (-> sv-16 transform-index) 4) + (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s0-0 sv-16) + (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) + (backup-collide-with-as s0-0) + (set! (-> self root-override) s0-0) ) - (set! (-> s0-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s0-0 reaction) default-collision-reaction) - (set! - (-> s0-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) - (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) - (set! (-> sv-16 collide-with) (the-as uint 16)) - (set! (-> sv-16 prim-core action) (the-as uint 1)) - (set! (-> sv-16 prim-core offense) 4) - (set! (-> sv-16 transform-index) 4) - (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s0-0 sv-16) - (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) - (backup-collide-with-as s0-0) - (set! (-> self root-override) s0-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) @@ -1310,35 +935,24 @@ (set! (-> self flight-time) (the-as int arg3)) (set! (-> self stall-time) (the-as int arg4)) (set! (-> self rotation-offset) (the-as int arg5)) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 647) self) - ) - (set! - (-> self shot-particle) - (create-launch-control (-> *part-group-id-table* 665) self) - ) - (set! - (-> self test-particle) - (create-launch-control (-> *part-group-id-table* 679) self) - ) - (logior! (-> self draw status) 2) - (set! - (-> self sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "red-fireball") - :volume #x400 - :fo-max 80 - ) - (-> self root-override trans) - ) - ) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 647) self)) + (set! (-> self shot-particle) (create-launch-control (-> *part-group-id-table* 665) self)) + (set! (-> self test-particle) (create-launch-control (-> *part-group-id-table* 679) self)) + (logior! (-> self draw status) (draw-status drwf01)) + (set! (-> self sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "red-fireball") + :volume #x400 + :fo-max 80 + ) + (-> self root-override trans) + ) + ) (go redshot-idle) (none) ) @@ -1356,104 +970,76 @@ (defstate yellowshot-idle (yellowshot) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch 'attack) - (when (= (-> arg0 type) target) - (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 ((a0-2 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-2 mode) 'generic) - (set! (-> a1-3 param 1) (the-as uint a0-2)) + (case arg2 + (('touch 'attack) + (when (= (-> arg0 type) target) + (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 ((a0-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-2 mode) 'generic) + (set! (-> a1-3 param 1) (the-as uint a0-2)) + ) + (send-event-function *target* a1-3) + ) + (send-event (ppointer->process (-> self parent)) 'hit-jak) ) - (send-event-function *target* a1-3) - ) - (send-event (ppointer->process (-> self parent)) 'hit-jak) ) ) ) - ) :enter - (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) :trans (behavior () - (arcing-shot-calculate - (-> self root-override trans) - (/ - (the float (- (-> *display* game-frame-counter) (-> self state-time))) - (the float (-> self flight-time)) - ) + (arcing-shot-calculate + (-> self root-override trans) + (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time))) + ) + (spawn (-> self part) (-> self root-override trans)) + (when (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) + (send-event (ppointer->process (-> self parent)) 'missed-jak) + (deactivate self) + ) + (none) ) - (spawn (-> self part) (-> self root-override trans)) - (when - (>= - (- (-> *display* game-frame-counter) (-> self state-time)) - (-> self flight-time) - ) - (send-event (ppointer->process (-> self parent)) 'missed-jak) - (deactivate self) - ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior yellowshot) transform-post) ) -(defbehavior - yellowshot-init-by-other yellowshot - ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint)) - (let - ((s2-0 - (new - 'process - 'collide-shape-moving - self - (collide-list-enum usually-hit-by-player) +(defbehavior yellowshot-init-by-other yellowshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint)) + (let ((s2-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) + (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s2-0 reaction) default-collision-reaction) + (set! (-> s2-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) + (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s1-0 collide-with) (the-as uint 16)) + (set! (-> s1-0 prim-core action) (the-as uint 1)) + (set! (-> s1-0 prim-core offense) 4) + (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) ) - ) + (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) + (backup-collide-with-as s2-0) + (set! (-> self root-override) s2-0) ) - (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s2-0 reaction) default-collision-reaction) - (set! - (-> s2-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 4) - (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s2-0 s1-0) - ) - (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (backup-collide-with-as s2-0) - (set! (-> self root-override) s2-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) (the-as int arg3)) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 652) self) - ) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 652) self)) (go yellowshot-idle) (none) ) diff --git a/goal_src/levels/finalboss/robotboss.gc b/goal_src/levels/finalboss/robotboss.gc index 6516006479..27b2c024d1 100644 --- a/goal_src/levels/finalboss/robotboss.gc +++ b/goal_src/levels/finalboss/robotboss.gc @@ -733,14 +733,14 @@ (defstate robotboss-white-eco-movie (robotboss) :enter (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (set! (-> self children-spawned) 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-post) (none) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (spool-push *art-control* "green-sagecage-daxter-sacrifice" 0 self (the-as float -1.0)) diff --git a/goal_src/levels/jungle/jungle-mirrors.gc b/goal_src/levels/jungle/jungle-mirrors.gc index 4e8706962b..fed4296c2c 100644 --- a/goal_src/levels/jungle/jungle-mirrors.gc +++ b/goal_src/levels/jungle/jungle-mirrors.gc @@ -1141,7 +1141,7 @@ (defbehavior periscope-draw-beam-impact periscope () (when (periscope-has-power-input?) (update! (-> self sound)) - (if (logtest? (-> self draw status) 8) + (if (logtest? (-> self draw status) (draw-status drwf03)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) @@ -1374,7 +1374,7 @@ :exit (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -1391,7 +1391,7 @@ (ja-post) (suspend) (dummy-47 (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) @@ -1654,7 +1654,7 @@ (defstate periscope-player-control (periscope) :exit (behavior () - (set! (-> self reflector 0 draw status) (logand -3 (-> self reflector 0 draw status))) + (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -1768,7 +1768,7 @@ (set! (-> gp-0 vector 3 quad) a2-2) ) (send-event *camera* 'change-state cam-periscope 0) - (logior! (-> self reflector 0 draw status) 2) + (logior! (-> self reflector 0 draw status) (draw-status drwf01)) (suspend) (while #t (if (not (-> self aligned?)) @@ -1797,7 +1797,7 @@ (periscope-crosshair) (suspend) ) - (set! (-> self reflector 0 draw status) (logand -3 (-> self reflector 0 draw status))) + (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -2120,7 +2120,7 @@ (while #t (draw-power-beam gp-0 (-> self beam-end)) (update! (-> self sound)) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index 3e2a1736c3..6cf4215b77 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -86,123 +86,71 @@ :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)) + (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 + (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!) ) - ) - ) - (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 + (until (ja-done? 0) + (when (logtest? (-> self draw status) (draw-status drwf03)) + (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!) ) - ) ) - ) ) - (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) ) - (none) - ) ) (defmethod init-from-entity! logtrap ((obj logtrap) (arg0 entity-actor)) (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (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) + (set-root-prim! s4-0 s3-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) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *logtrap-sg* '()) - (set! - (-> obj draw shadow-ctrl) - (new 'process 'shadow-control -5734.4 0.0 614400.0 (the-as float 1) 163840.0) - ) + (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)) @@ -230,53 +178,27 @@ (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 + (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!) + ) ) - ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior towertop) ja-post) ) @@ -314,145 +236,90 @@ (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 - ) - ) - ) + (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 + (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!) + ) ) - ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior lurkerm-tall-sail) rider-post) ) -(defmethod - init-from-entity! - lurkerm-tall-sail - ((obj lurkerm-tall-sail) (arg0 entity-actor)) +(defmethod init-from-entity! lurkerm-tall-sail ((obj lurkerm-tall-sail) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let ((s3-0 (new 'process 'collide-shape-prim-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) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) + (append-prim s3-0 s2-0) ) - ) ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 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) - (append-prim s3-0 s2-0) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *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) - ) + (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) ) @@ -480,182 +347,107 @@ (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 - ) - ) - ) + (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 + (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!) + ) ) - ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior lurkerm-short-sail) rider-post) ) -(defmethod - init-from-entity! - lurkerm-short-sail - ((obj lurkerm-short-sail) (arg0 entity-actor)) +(defmethod init-from-entity! lurkerm-short-sail ((obj lurkerm-short-sail) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let ((s3-0 (new 'process 'collide-shape-prim-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) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) + (append-prim s3-0 s2-0) ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 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) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 0) + (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) + (append-prim s3-0 s2-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) 3) - (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-1) - ) - (let - ((s2-2 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) + (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) + (append-prim s3-0 s2-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) 40960.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-2) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *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) - ) + (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) ) @@ -686,131 +478,74 @@ (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 - ) - ) - ) + (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 + (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!) ) - ) - ) - (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) + (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!) + ) ) - ) - (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) ) - (none) - ) :post (the-as (function none :behavior lurkerm-piston) rider-post) ) -(defmethod - init-from-entity! - lurkerm-piston - ((obj lurkerm-piston) (arg0 entity-actor)) +(defmethod init-from-entity! lurkerm-piston ((obj lurkerm-piston) (arg0 entity-actor)) (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (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) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (logclear! (-> obj mask) (process-mask actor-pause)) (initialize-skeleton obj *lurkerm-piston-sg* '()) @@ -818,45 +553,35 @@ (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 - ) + (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 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 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) ) - (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) - ) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (set! (-> obj speed) 0.0) + ) (go lurkerm-piston-idle) (none) ) @@ -883,49 +608,37 @@ (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 - ) - ) - ) + (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! - ) + (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) - ) + (ja-post) + (while #t + (suspend) + (when (logtest? (-> self draw status) (draw-status drwf03)) + (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) ) - (none) - ) ) (defmethod init-from-entity! accordian ((obj accordian) (arg0 entity-actor)) @@ -935,13 +648,9 @@ (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) - ) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (set! (-> obj speed) 0.0) + ) (go accordian-idle) (none) ) @@ -975,59 +684,38 @@ :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! + (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) ) - (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) @@ -1062,176 +750,130 @@ (defstate precurbridge-idle (precurbridge) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('go) - (go precurbridge-activate) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('go) + (go precurbridge-activate) + ) + ) + ) :code (behavior () - (let ((gp-0 (-> self skel root-channel 0))) - (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) + (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 ) - 49152.0 - ) - (< (-> self activation-point y) (-> *target* control trans y)) - (< (-> *target* control trans y) (+ 20480.0 (-> self activation-point y))) - (not (-> self child)) + (set! (-> gp-0 frame-num) 0.0) ) - (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) + (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) + ) + ) ) - ) - (run-now-in-process - s5-0 - pov-camera-init-by-other - (-> gp-1 extra trans) - *junglecam-sg* - "precurbridgecam" - 0 - #f - '() - ) - (-> s5-0 ppointer) ) + (else + (level-hint-spawn + (game-text-id jungle-precursorbridge-hint) + "sksp0039" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) ) - ) - (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) ) - ) - (suspend) + (none) ) - (none) - ) :post (the-as (function none :behavior precurbridge) ja-post) ) (defstate precurbridge-activate (precurbridge) :exit - (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (none) - ) + (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) :trans (the-as (function none :behavior precurbridge) rider-trans) :code (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 + (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!) ) - -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! - ) + (go precurbridge-active #f) + (none) ) - (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) ) @@ -1239,452 +881,262 @@ (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)) - ) - (get-touched-prim - a0-2 - s5-0 - (the-as touching-prims-entry gp-0) - ) - ((method-of-type touching-shapes-entry get-touched-shape) - (the-as touching-shapes-entry gp-0) - s5-0 - ) - ) - (activate! (-> self smush) -1.0 150 600 1.0 1.0) - ) - ) + (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)) + ) + (get-touched-prim a0-2 s5-0 (the-as touching-prims-entry gp-0)) + ((method-of-type touching-shapes-entry get-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))) + (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-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-identity - ) - (set! (-> gp-1 frame-num) 0.0) + gp-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-identity + ) + (set! (-> gp-0 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-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) ) - (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) + (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) ) - ) - (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) ) - (none) - ) :post (the-as (function none :behavior precurbridge) rider-post) ) -(defmethod - init-from-entity! - precurbridge - ((obj precurbridge) (arg0 entity-actor)) +(defmethod init-from-entity! precurbridge ((obj precurbridge) (arg0 entity-actor)) (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)) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 5) + (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 7) + (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 9) + (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-2) + ) + (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 11) + (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-3) + ) + (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 13) + (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-4) + ) + (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 15) + (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-5) + ) + (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 17) + (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-6) + ) + (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 19) + (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-7) + ) + (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 4) + (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-8) + ) + (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 6) + (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-9) + ) + (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 8) + (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-10) + ) + (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 10) + (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-11) + ) + (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 12) + (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-12) + ) + (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 14) + (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-13) + ) + (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 16) + (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-14) + ) + (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 18) + (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-15) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (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) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 3) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) 5) - (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) 7) - (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-1) - ) - (let - ((s2-2 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 3) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) - (set! (-> s2-2 transform-index) 9) - (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-2) - ) - (let - ((s2-3 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) - (set! (-> s2-3 transform-index) 11) - (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-3) - ) - (let - ((s2-4 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 3) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) - (set! (-> s2-4 transform-index) 13) - (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-4) - ) - (let - ((s2-5 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) - (set! (-> s2-5 transform-index) 15) - (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-5) - ) - (let - ((s2-6 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 3) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) - (set! (-> s2-6 transform-index) 17) - (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-6) - ) - (let - ((s2-7 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) - (set! (-> s2-7 transform-index) 19) - (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-7) - ) - (let - ((s2-8 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) - (set! (-> s2-8 transform-index) 4) - (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-8) - ) - (let - ((s2-9 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) - (set! (-> s2-9 transform-index) 6) - (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-9) - ) - (let - ((s2-10 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) - (set! (-> s2-10 transform-index) 8) - (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-10) - ) - (let - ((s2-11 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) - (set! (-> s2-11 transform-index) 10) - (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-11) - ) - (let - ((s2-12 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) - (set! (-> s2-12 transform-index) 12) - (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-12) - ) - (let - ((s2-13 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) - (set! (-> s2-13 transform-index) 14) - (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-13) - ) - (let - ((s2-14 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) - (set! (-> s2-14 transform-index) 16) - (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-14) - ) - (let - ((s2-15 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) - (set! (-> s2-15 transform-index) 18) - (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-15) - ) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (set-vector! (-> obj activation-point) 1765785.6 61440.0 -1279180.8 1.0) (initialize-skeleton obj *precurbridge-sg* '()) @@ -1692,22 +1144,16 @@ (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)) - ) + (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)) + ((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go precurbridge-active #t) ) - (logclear! (-> obj mask) (process-mask actor-pause)) - (go precurbridge-active #t) + (else + (go precurbridge-idle) + ) ) - (else - (go precurbridge-idle) - ) - ) (none) ) @@ -1733,188 +1179,133 @@ (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) + (set! (-> self draw force-lod) 1) + (logclear! (-> self draw status) (draw-status drwf01)) + (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) ) - ) - (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) + (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) ) - (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 draw force-lod) 0) + (logclear! (-> self draw status) (draw-status drwf01)) + (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! (-> 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) ) - (set! (-> a0-10 param 1) 2.0) - (joint-control-channel-group-eval! - a0-10 - (the-as art-joint-anim #f) - num-func-seek! + (logior! (-> self draw status) (draw-status drwf01)) + (while #t + (suspend) ) - ) - (if (and (not arg0) (rand-vu-percent? 0.2)) - (spawn-projectile-blue *target*) - ) - (suspend) + (none) ) - (logior! (-> self draw status) 2) - (while #t - (suspend) - ) - (none) - ) :post (the-as (function none :behavior maindoor) ja-post) ) (defmethod init-from-entity! maindoor ((obj maindoor) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (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) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (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) - ) - ) + (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) ) - (send-event *target* 'query 'powerup 3) - ) - ) - (go maindoor-open #t) - (go maindoor-closed #t) - ) (none) ) @@ -1936,31 +1327,20 @@ ) (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) - ) + (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) + (set-root-prim! s5-0 s4-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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1989,18 +1369,12 @@ (defmethod relocate jngpusher ((obj jngpusher) (arg0 int)) (if (nonzero? (-> obj back-prim)) - (&+! (-> obj back-prim) arg0) - ) + (&+! (-> obj back-prim) arg0) + ) (the-as - jngpusher - ((the-as - (function process-drawable int process-drawable) - (find-parent-method jngpusher 7) - ) - obj - arg0 + jngpusher + ((the-as (function process-drawable int process-drawable) (find-parent-method jngpusher 7)) obj arg0) ) - ) ) (defskelgroup *jngpusher-sg* jngpusher @@ -2016,103 +1390,69 @@ (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)) - ) + (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) ) - ) - (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) ) - (none) - ) :post (the-as (function none :behavior jngpusher) rider-post) ) (defmethod init-from-entity! jngpusher ((obj jngpusher) (arg0 entity-actor)) (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 transform-index) 0) - (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 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) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 0) + (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) + (append-prim s3-0 s2-1) + (set! (-> obj back-prim) s2-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) 36864.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-1) - (set! (-> obj back-prim) s2-1) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *jngpusher-sg* '()) (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) @@ -2129,37 +1469,35 @@ ) -(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) - ) - ) - ) +(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 + (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/jungle/junglesnake.gc b/goal_src/levels/jungle/junglesnake.gc index d97fb30eea..fd5fc0a2b2 100644 --- a/goal_src/levels/jungle/junglesnake.gc +++ b/goal_src/levels/jungle/junglesnake.gc @@ -15,51 +15,46 @@ :longest-edge (meters 2.5) ) -(set! - (-> *part-group-id-table* 173) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-junglesnake-dropping-down" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 799 :period 300 :length 150) - ) - :bounds - (new 'static 'sphere :y -49152.0 :w 57344.0) - ) - ) +(set! (-> *part-group-id-table* 173) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-junglesnake-dropping-down" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 799 :period 300 :length 150)) + :bounds + (new 'static 'sphere :y -49152.0 :w 57344.0) + ) + ) -(set! - (-> *part-id-table* 799) - (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-flt spt-num 1.0) - (sp-rnd-flt spt-x (meters -9.0) (meters 18.0) 1.0) - (sp-flt spt-y (meters -6.0)) - (sp-rnd-flt spt-z -36864.0 73728.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 32.0 40.0 1.0) - (sp-rnd-flt spt-g 32.0 40.0 1.0) - (sp-rnd-flt spt-b 32.0 40.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.04) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) - (sp-rnd-flt spt-accel-y -6.826667 -0.68266666 1.0) - (sp-int spt-timer 390) - (sp-cpuinfo-flags bit2) - (sp-flt spt-userdata 0.0) - (sp-func spt-func 'check-water-level-drop) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 799) (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-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -9.0) (meters 18.0) 1.0) + (sp-flt spt-y (meters -6.0)) + (sp-rnd-flt spt-z -36864.0 73728.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 40.0 1.0) + (sp-rnd-flt spt-g 32.0 40.0 1.0) + (sp-rnd-flt spt-b 32.0 40.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.04) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-rnd-flt spt-accel-y -6.826667 -0.68266666 1.0) + (sp-int spt-timer 390) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-water-level-drop) + (sp-end) + ) + ) + ) (deftype junglesnake-twist-joint (structure) ((joint-index int32 :offset-assert 0) @@ -120,287 +115,229 @@ ;; WARN: disable def twice: 39. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. -(defbehavior - junglesnake-default-event-handler junglesnake - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch) - (when - (and - *target* - ((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) - ) - ) - (cond - ((and - (-> self is-lethal?) - (zero? (logand (-> *target* state-flags) #x80f8)) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (set! (-> a1-2 param 1) (the-as uint (new 'static 'attack-info))) - (when (send-event-function arg0 a1-2) - (let ((v0-1 (the-as object #t))) - (set! (-> self hit-player) (the-as symbol v0-1)) - v0-1 +(defbehavior junglesnake-default-event-handler junglesnake ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (when (and *target* ((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) + ) + ) + (cond + ((and (-> self is-lethal?) (zero? (logand (-> *target* state-flags) #x80f8))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> arg3 param 0)) + (set! (-> a1-2 param 1) (the-as uint (new 'static 'attack-info))) + (when (send-event-function arg0 a1-2) + (let ((v0-1 (the-as object #t))) + (set! (-> self hit-player) (the-as symbol v0-1)) + v0-1 + ) + ) + ) + ) + (else + (dummy-45 (-> self root-override)) + (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-17 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-17 shove-back) 8192.0) + (set! (-> v1-17 shove-up) 2048.0) + (set! (-> a1-3 param 1) (the-as uint v1-17)) + ) + (send-event-function arg0 a1-3) + ) ) - ) ) - ) - (else - (dummy-45 (-> self root-override)) - (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-17 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-17 shove-back) 8192.0) - (set! (-> v1-17 shove-up) 2048.0) - (set! (-> a1-3 param 1) (the-as uint v1-17)) - ) - (send-event-function arg0 a1-3) - ) - ) ) - ) ) - (('attack) - (go junglesnake-die) + (('attack) + (go junglesnake-die) + ) ) - ) ) junglesnake-default-event-handler (defmethod dummy-20 junglesnake ((obj junglesnake)) (when (and *target* (-> obj track-player-ry)) - (let ((v1-3 (target-pos 0))) - (set! - (-> obj des-ry) - (atan - (- (-> v1-3 x) (-> obj root-override trans x)) - (- (-> v1-3 z) (-> obj root-override trans z)) + (let ((v1-3 (target-pos 0))) + (set! (-> obj des-ry) + (atan (- (-> v1-3 x) (-> obj root-override trans x)) (- (-> v1-3 z) (-> obj root-override trans z))) + ) ) - ) ) - ) (let ((f0-7 (deg-diff (-> obj ry) (-> obj des-ry)))) - (+! - (-> obj ry) - (seek-with-smooth - 0.0 - f0-7 - (* 655360.0 (-> *display* seconds-per-frame)) - 0.125 - 0.001 - ) + (+! (-> obj ry) (seek-with-smooth 0.0 f0-7 (* 655360.0 (-> *display* seconds-per-frame)) 0.125 0.001)) ) - ) (let ((f30-1 (-> obj ry))) - (dotimes (s5-0 24) - (let ((s4-0 (-> obj twist-joints s5-0))) - (let ((f28-0 (-> s4-0 drag-delta-ry))) - (cond - ((= f28-0 0.0) - (set! (-> s4-0 ry) f30-1) - ) - (else - (let ((f26-0 (-> s4-0 ry))) - (let ((f0-14 (deg-diff f30-1 (-> s4-0 ry)))) - (if (< f28-0 (fabs f0-14)) - (set! f26-0 (if (>= f0-14 0.0) - (+ f30-1 f28-0) - (- f30-1 f28-0) - ) + (dotimes (s5-0 24) + (let ((s4-0 (-> obj twist-joints s5-0))) + (let ((f28-0 (-> s4-0 drag-delta-ry))) + (cond + ((= f28-0 0.0) + (set! (-> s4-0 ry) f30-1) + ) + (else + (let ((f26-0 (-> s4-0 ry))) + (let ((f0-14 (deg-diff f30-1 (-> s4-0 ry)))) + (if (< f28-0 (fabs f0-14)) + (set! f26-0 (if (>= f0-14 0.0) + (+ f30-1 f28-0) + (- f30-1 f28-0) + ) + ) + ) + ) + (let ((f0-16 (deg-diff (-> s4-0 ry) f26-0))) + (+! (-> s4-0 ry) (seek-with-smooth 0.0 f0-16 (* 327680.0 (-> *display* seconds-per-frame)) 0.25 0.001)) + ) + ) + ) ) - ) ) - (let ((f0-16 (deg-diff (-> s4-0 ry) f26-0))) - (+! - (-> s4-0 ry) - (seek-with-smooth - 0.0 - f0-16 - (* 327680.0 (-> *display* seconds-per-frame)) - 0.25 - 0.001 - ) - ) - ) - ) + (set! f30-1 (-> s4-0 ry)) ) - ) ) - (set! f30-1 (-> s4-0 ry)) - ) ) - ) #f ) (defun junglesnake-joint-callback ((arg0 junglesnake)) (let ((s5-0 arg0)) - (let ((s4-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'matrix)) - (s2-0 (new 'stack-no-clear 'matrix)) - ) - (let ((s1-0 (new 'stack-no-clear 'vector))) - (set-vector! - s1-0 - (-> arg0 root-override trans x) - (-> arg0 root-override trans y) - (-> arg0 root-override trans z) - 1.0 - ) - (matrix-translate! s2-0 s1-0) - (vector-negate! s1-0 s1-0) - (matrix-translate! s3-0 s1-0) - ) - (dotimes (s1-1 24) - (let ((s0-0 (-> s5-0 twist-joints s1-1))) - (matrix-rotate-y! s4-0 (-> s0-0 ry)) - (let - ((s0-1 (-> arg0 node-list data (-> s0-0 joint-index) bone transform))) - (matrix*! s0-1 s0-1 s3-0) - (matrix*! s0-1 s0-1 s4-0) - (matrix*! s0-1 s0-1 s2-0) - ) - ) - ) - ) - (dotimes (s4-1 9) - (let ((s3-1 (-> arg0 node-list data (+ s4-1 11) bone transform))) - (let ((a0-14 (-> arg0 node-list data (+ s4-1 12) bone transform)) - (a1-7 (new 'stack-no-clear 'vector)) - ) - (vector-! a1-7 (-> a0-14 vector 3) (-> s3-1 vector 3)) - (vector-normalize-copy! (-> s3-1 vector 1) a1-7 1.0) - ) - (set! (-> s3-1 vector 1 w) 0.0) - (vector-normalize! - (vector-cross! - (-> s3-1 vector 2) - (the-as vector (-> s3-1 vector)) - (-> s3-1 vector 1) - ) - 1.0 - ) - (vector-normalize! - (vector-cross! - (the-as vector (-> s3-1 vector)) - (-> s3-1 vector 1) - (-> s3-1 vector 2) - ) - 1.0 - ) - ) - ) - (cond - ((and (-> s5-0 track-player-tilt) *target*) - (let ((s2-1 (-> arg0 node-list data 25 bone transform)) - (s4-2 (new 'stack-no-clear 'vector)) - ) - (vector-normalize-copy! s4-2 (-> s2-1 vector 1) 1.0) - (set! (-> s4-2 w) 1.0) - (let ((s1-2 (new 'stack-no-clear 'vector))) - (vector-! s1-2 (target-pos 0) (-> s2-1 vector 3)) - (set! (-> s1-2 y) (+ 9011.2 (-> s1-2 y))) - (vector-normalize! s1-2 1.0) - (let ((s0-2 (new 'stack-no-clear 'vector)) - (s3-4 (new 'stack-no-clear 'vector)) - ) - (vector-normalize-copy! s0-2 (-> s2-1 vector 2) 1.0) - (vector-flatten! s3-4 s1-2 s0-2) - (vector-normalize! s3-4 1.0) - (let ((f30-0 (acos (vector-dot s4-2 s3-4)))) - (if (< (-> s4-2 y) (-> s3-4 y)) - (set! f30-0 (- f30-0)) + (let ((s4-0 (new 'stack-no-clear 'matrix)) + (s3-0 (new 'stack-no-clear 'matrix)) + (s2-0 (new 'stack-no-clear 'matrix)) ) - (cond - ((< 7281.778 f30-0) - (set! f30-0 7281.778) - ) - ((< f30-0 -11650.845) - (set! f30-0 -11650.845) - ) + (let ((s1-0 (new 'stack-no-clear 'vector))) + (set-vector! + s1-0 + (-> arg0 root-override trans x) + (-> arg0 root-override trans y) + (-> arg0 root-override trans z) + 1.0 ) - (let ((f0-16 (fabs (deg-diff (-> s5-0 ry) (-> s5-0 des-ry))))) - (if (>= f0-16 24576.0) - (set! f30-0 (* 0.00012207031 (- 32768.0 f0-16) f30-0)) - ) - ) - (set! (-> s5-0 des-tilt) f30-0) - ) + (matrix-translate! s2-0 s1-0) + (vector-negate! s1-0 s1-0) + (matrix-translate! s3-0 s1-0) ) - ) - ) - ) - (else - (set! (-> s5-0 des-tilt) 0.0) - ) - ) - (let* ((f30-1 (-> s5-0 tilt)) - (f0-21 (deg-diff f30-1 (-> s5-0 des-tilt))) - (f28-0 - (+ - f30-1 - (seek-with-smooth - 0.0 - f0-21 - (* 65536.0 (-> *display* seconds-per-frame)) - 0.2 - 0.001 - ) + (dotimes (s1-1 24) + (let ((s0-0 (-> s5-0 twist-joints s1-1))) + (matrix-rotate-y! s4-0 (-> s0-0 ry)) + (let ((s0-1 (-> arg0 node-list data (-> s0-0 joint-index) bone transform))) + (matrix*! s0-1 s0-1 s3-0) + (matrix*! s0-1 s0-1 s4-0) + (matrix*! s0-1 s0-1 s2-0) ) - ) ) - (set! (-> s5-0 tilt) f28-0) - (let ((f30-2 (cos f28-0)) - (f28-1 (sin f28-0)) - (s4-3 (new 'stack-no-clear 'matrix)) - (s3-5 (new 'stack-no-clear 'matrix)) - ) - (matrix-identity! s4-3) - (set! (-> s4-3 vector 0 x) f30-2) - (set! (-> s4-3 vector 0 y) f28-1) - (set! (-> s4-3 vector 1 x) (- f28-1)) - (set! (-> s4-3 vector 1 y) f30-2) - (let* ((a2-9 s3-5) - (a3-1 s4-3) - (v1-47 (-> a3-1 vector 0 quad)) - (a0-36 (-> a3-1 vector 1 quad)) - (a1-20 (-> a3-1 vector 2 quad)) - (a3-2 (-> a3-1 vector 3 quad)) - ) - (set! (-> a2-9 vector 0 quad) v1-47) - (set! (-> a2-9 vector 1 quad) a0-36) - (set! (-> a2-9 vector 2 quad) a1-20) - (set! (-> a2-9 vector 3 quad) a3-2) + ) ) - (set! (-> s3-5 vector 0 y) (- (-> s3-5 vector 0 y))) - (set! (-> s3-5 vector 1 x) (- (-> s3-5 vector 1 x))) - (dotimes (s2-2 3) - (let* ((v1-50 (-> s5-0 tilt-joints s2-2)) - (a2-10 - (-> arg0 node-list data (-> v1-50 joint-index) bone transform) + (dotimes (s4-1 9) + (let ((s3-1 (-> arg0 node-list data (+ s4-1 11) bone transform))) + (let ((a0-14 (-> arg0 node-list data (+ s4-1 12) bone transform)) + (a1-7 (new 'stack-no-clear 'vector)) ) - ) - (if (-> v1-50 flip-it) - (matrix*! a2-10 s3-5 a2-10) - (matrix*! a2-10 s4-3 a2-10) + (vector-! a1-7 (-> a0-14 vector 3) (-> s3-1 vector 3)) + (vector-normalize-copy! (-> s3-1 vector 1) a1-7 1.0) + ) + (set! (-> s3-1 vector 1 w) 0.0) + (vector-normalize! (vector-cross! (-> s3-1 vector 2) (the-as vector (-> s3-1 vector)) (-> s3-1 vector 1)) 1.0) + (vector-normalize! (vector-cross! (the-as vector (-> s3-1 vector)) (-> s3-1 vector 1) (-> s3-1 vector 2)) 1.0) + ) + ) + (cond + ((and (-> s5-0 track-player-tilt) *target*) + (let ((s2-1 (-> arg0 node-list data 25 bone transform)) + (s4-2 (new 'stack-no-clear 'vector)) + ) + (vector-normalize-copy! s4-2 (-> s2-1 vector 1) 1.0) + (set! (-> s4-2 w) 1.0) + (let ((s1-2 (new 'stack-no-clear 'vector))) + (vector-! s1-2 (target-pos 0) (-> s2-1 vector 3)) + (set! (-> s1-2 y) (+ 9011.2 (-> s1-2 y))) + (vector-normalize! s1-2 1.0) + (let ((s0-2 (new 'stack-no-clear 'vector)) + (s3-4 (new 'stack-no-clear 'vector)) + ) + (vector-normalize-copy! s0-2 (-> s2-1 vector 2) 1.0) + (vector-flatten! s3-4 s1-2 s0-2) + (vector-normalize! s3-4 1.0) + (let ((f30-0 (acos (vector-dot s4-2 s3-4)))) + (if (< (-> s4-2 y) (-> s3-4 y)) + (set! f30-0 (- f30-0)) + ) + (cond + ((< 7281.778 f30-0) + (set! f30-0 7281.778) + ) + ((< f30-0 -11650.845) + (set! f30-0 -11650.845) + ) + ) + (let ((f0-16 (fabs (deg-diff (-> s5-0 ry) (-> s5-0 des-ry))))) + (if (>= f0-16 24576.0) + (set! f30-0 (* 0.00012207031 (- 32768.0 f0-16) f30-0)) + ) + ) + (set! (-> s5-0 des-tilt) f30-0) + ) + ) + ) + ) + ) + (else + (set! (-> s5-0 des-tilt) 0.0) + ) + ) + (let* ((f30-1 (-> s5-0 tilt)) + (f0-21 (deg-diff f30-1 (-> s5-0 des-tilt))) + (f28-0 (+ f30-1 (seek-with-smooth 0.0 f0-21 (* 65536.0 (-> *display* seconds-per-frame)) 0.2 0.001))) + ) + (set! (-> s5-0 tilt) f28-0) + (let ((f30-2 (cos f28-0)) + (f28-1 (sin f28-0)) + (s4-3 (new 'stack-no-clear 'matrix)) + (s3-5 (new 'stack-no-clear 'matrix)) + ) + (matrix-identity! s4-3) + (set! (-> s4-3 vector 0 x) f30-2) + (set! (-> s4-3 vector 0 y) f28-1) + (set! (-> s4-3 vector 1 x) (- f28-1)) + (set! (-> s4-3 vector 1 y) f30-2) + (let* ((a2-9 s3-5) + (a3-1 s4-3) + (v1-47 (-> a3-1 vector 0 quad)) + (a0-36 (-> a3-1 vector 1 quad)) + (a1-20 (-> a3-1 vector 2 quad)) + (a3-2 (-> a3-1 vector 3 quad)) + ) + (set! (-> a2-9 vector 0 quad) v1-47) + (set! (-> a2-9 vector 1 quad) a0-36) + (set! (-> a2-9 vector 2 quad) a1-20) + (set! (-> a2-9 vector 3 quad) a3-2) + ) + (set! (-> s3-5 vector 0 y) (- (-> s3-5 vector 0 y))) + (set! (-> s3-5 vector 1 x) (- (-> s3-5 vector 1 x))) + (dotimes (s2-2 3) + (let* ((v1-50 (-> s5-0 tilt-joints s2-2)) + (a2-10 (-> arg0 node-list data (-> v1-50 joint-index) bone transform)) + ) + (if (-> v1-50 flip-it) + (matrix*! a2-10 s3-5 a2-10) + (matrix*! a2-10 s4-3 a2-10) + ) + ) + ) ) - ) ) - ) ) - ) 0 (none) ) @@ -410,41 +347,29 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (set! (-> self skel postbind-function) #f) - (set! (-> self track-player-ry) #f) - (set! (-> self track-player-tilt) #f) - (set! (-> self des-ry) (-> self ry)) - (set! (-> self des-tilt) (-> self tilt)) - (logior! (-> self draw status) 2) - (none) - ) + (set! (-> self skel postbind-function) #f) + (set! (-> self track-player-ry) #f) + (set! (-> self track-player-tilt) #f) + (set! (-> self des-ry) (-> self ry)) + (set! (-> self des-tilt) (-> self tilt)) + (logior! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () - (when *target* - (let* ((a0-1 (target-pos 0)) - (f0-1 (- (-> a0-1 y) (-> self root-override trans y))) - ) - (if - (and - (>= 40960.0 f0-1) - (>= - 143360.0 - (vector-vector-xz-distance a0-1 (-> self root-override trans)) + (when *target* + (let* ((a0-1 (target-pos 0)) + (f0-1 (- (-> a0-1 y) (-> self root-override trans y))) + ) + (if (and (>= 40960.0 f0-1) (>= 143360.0 (vector-vector-xz-distance a0-1 (-> self root-override trans)))) + (go junglesnake-wake) + ) ) - ) - (go junglesnake-wake) ) - ) + (none) ) - (none) - ) :code - (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - (none) - ) + (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) ) (defstate junglesnake-wake (junglesnake) @@ -452,91 +377,51 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (set! (-> self track-player-ry) #f) - (set! (-> self track-player-tilt) #f) - (set! - (-> self skel postbind-function) - (the-as - (function pointer int process-drawable none) - junglesnake-joint-callback - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (set! (-> self track-player-ry) #f) + (set! (-> self track-player-tilt) #f) + (set! (-> self skel postbind-function) junglesnake-joint-callback) + (set! (-> self refractory-delay) 0) + 0 + (none) ) - (set! (-> self refractory-delay) 0) - 0 - (none) - ) :trans (behavior () - (dummy-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as - vector - (-> - (the-as collide-shape-prim-group (-> self root-override root-prim)) - prims - 0 - prim-core - ) - ) - 'attacking - self + (dummy-20 self) + (when *target* + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 prim-core)) + 'attacking + self + ) + ) ) - ) + (none) ) - (none) - ) :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 + (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) 0.85) + (set! (-> a0-0 frame-num) 0.5) + (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) 0.85) + (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-0 param 1) 0.85) - (set! (-> a0-0 frame-num) 0.5) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) + (go junglesnake-tracking) + (none) ) - (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.85) - (joint-control-channel-group-eval! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go junglesnake-tracking) - (none) - ) :post (the-as (function none :behavior junglesnake) transform-post) ) @@ -546,143 +431,85 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self track-player-ry) #t) - (set! (-> self track-player-tilt) #t) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self track-player-ry) #t) + (set! (-> self track-player-tilt) #t) + (none) + ) :trans (behavior () - (if - (and - (and - *target* - (>= - 24576.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (if (and + (and *target* (>= 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self refractory-delay)) + (zero? (logand (-> *target* state-flags) #x80f8)) + ) + (go junglesnake-attack) ) - ) - ) - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (-> self refractory-delay) - ) - (zero? (logand (-> *target* state-flags) #x80f8)) - ) - (go junglesnake-attack) - ) - (when *target* - (let ((a0-8 (target-pos 0))) - (if - (or - (>= (- (-> a0-8 y) (-> self root-override trans y)) 57344.0) - (>= - (vector-vector-xz-distance a0-8 (-> self root-override trans)) - 163840.0 + (when *target* + (let ((a0-8 (target-pos 0))) + (if (or + (>= (- (-> a0-8 y) (-> self root-override trans y)) 57344.0) + (>= (vector-vector-xz-distance a0-8 (-> self root-override trans)) 163840.0) + ) + (go junglesnake-give-up) + ) ) - ) - (go junglesnake-give-up) ) - ) - ) - (dummy-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as - vector - (-> - (the-as collide-shape-prim-group (-> self root-override root-prim)) - prims - 0 - prim-core - ) - ) - 'attacking - self + (dummy-20 self) + (when *target* + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 prim-core)) + 'attacking + self + ) + ) ) - ) + (none) ) - (none) - ) :code (behavior () - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 2) + ) + (while (not (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!) + ) ) - (-> self draw art-group data 2) - ) - (while (not (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! - ) ) + (else + (ja-channel-push! 1 45) + ) ) - ) - (else - (ja-channel-push! 1 45) - ) + (while #t + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> a0-7 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) 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 2)) 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!) + ) + ) + ) + (none) ) - (while #t - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> a0-7 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - 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 2)) - 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! - ) - ) - ) - ) - (none) - ) :post (the-as (function none :behavior junglesnake) transform-post) ) @@ -691,157 +518,90 @@ junglesnake-default-event-handler :event junglesnake-default-event-handler :enter - (behavior () - (set! (-> self hit-player) #f) - (none) - ) + (behavior () (set! (-> self hit-player) #f) (none)) :exit - (behavior () - (dummy-24 self) - (none) - ) + (behavior () (dummy-24 self) (none)) :trans (behavior () - (dummy-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as - vector - (-> - (the-as collide-shape-prim-group (-> self root-override root-prim)) - prims - 0 - prim-core - ) - ) - 'attacking - self + (dummy-20 self) + (when *target* + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 prim-core)) + 'attacking + self + ) + ) ) - ) + (none) ) - (none) - ) :code (behavior () - (set! (-> self track-player-ry) #t) - (set! (-> self track-player-tilt) #t) - (ja-channel-push! 2 45) - (dummy-23 self) - (let - ((f30-0 - (lerp-scale - 0.0 - 1.0 - (vector-vector-distance (target-pos 0) (-> self root-override trans)) - 0.0 - 24576.0 - ) - ) - ) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 frame-group) - (the-as art-joint-anim (-> self draw art-group data 3)) - ) - (set! - (-> a0-5 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length - ) - -1 + (set! (-> self track-player-ry) #t) + (set! (-> self track-player-tilt) #t) + (ja-channel-push! 2 45) + (dummy-23 self) + (let ((f30-0 (lerp-scale 0.0 1.0 (vector-vector-distance (target-pos 0) (-> self root-override trans)) 0.0 24576.0)) + ) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) + (set! (-> a0-5 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1)) + ) + (set! (-> a0-5 param 1) 1.25) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!) ) - ) - ) - (set! (-> a0-5 param 1) 1.25) - (set! (-> a0-5 frame-num) 0.0) - (joint-control-channel-group! - a0-5 - (the-as art-joint-anim (-> self draw art-group data 3)) - num-func-seek! - ) - ) - (let ((a0-6 (-> self skel root-channel 1))) - (set! (-> a0-6 frame-interp) f30-0) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! (-> a0-6 param 0) 0.0) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-chan - ) - ) - (until (ja-done? 0) - (suspend) - (set! - f30-0 - (seek - f30-0 - (lerp-scale - 0.0 - 1.0 - (vector-vector-distance (target-pos 0) (-> self root-override trans)) - 0.0 - 24576.0 + (let ((a0-6 (-> self skel root-channel 1))) + (set! (-> a0-6 frame-interp) f30-0) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> a0-6 param 0) 0.0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-chan) ) - (* 2.0 (-> *display* seconds-per-frame)) - ) - ) - (let ((a0-11 (-> self skel root-channel 0))) - (set! - (-> a0-11 param 0) - (the float (+ (-> a0-11 frame-group data 0 length) -1)) - ) - (set! (-> a0-11 param 1) 1.25) - (joint-control-channel-group-eval! - a0-11 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (let ((a0-12 (-> self skel root-channel 1))) - (set! (-> a0-12 frame-interp) f30-0) - (set! (-> a0-12 param 0) 0.0) - (joint-control-channel-group-eval! - a0-12 - (the-as art-joint-anim #f) - num-func-chan - ) - ) - (let ((f0-12 (ja-aframe-num 0))) - (cond - ((and (>= f0-12 22.0) (< f0-12 44.0)) - (if (not (-> self is-lethal?)) - (dummy-23 self) - ) + (until (ja-done? 0) + (suspend) + (set! f30-0 + (seek + f30-0 + (lerp-scale 0.0 1.0 (vector-vector-distance (target-pos 0) (-> self root-override trans)) 0.0 24576.0) + (* 2.0 (-> *display* seconds-per-frame)) + ) + ) + (let ((a0-11 (-> self skel root-channel 0))) + (set! (-> a0-11 param 0) (the float (+ (-> a0-11 frame-group data 0 length) -1))) + (set! (-> a0-11 param 1) 1.25) + (joint-control-channel-group-eval! a0-11 (the-as art-joint-anim #f) num-func-seek!) + ) + (let ((a0-12 (-> self skel root-channel 1))) + (set! (-> a0-12 frame-interp) f30-0) + (set! (-> a0-12 param 0) 0.0) + (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-chan) + ) + (let ((f0-12 (ja-aframe-num 0))) + (cond + ((and (>= f0-12 22.0) (< f0-12 44.0)) + (if (not (-> self is-lethal?)) + (dummy-23 self) + ) + ) + (else + (if (-> self is-lethal?) + (dummy-24 self) + ) + ) + ) + ) ) - (else - (if (-> self is-lethal?) - (dummy-24 self) - ) - ) - ) ) - ) + (if (-> self hit-player) + (set! (-> self refractory-delay) (rand-vu-int-range 300 600)) + (set! (-> self refractory-delay) (rand-vu-int-range 150 300)) + ) + (go junglesnake-tracking) + (none) ) - (if (-> self hit-player) - (set! (-> self refractory-delay) (rand-vu-int-range 300 600)) - (set! (-> self refractory-delay) (rand-vu-int-range 150 300)) - ) - (go junglesnake-tracking) - (none) - ) :post (the-as (function none :behavior junglesnake) transform-post) ) @@ -851,88 +611,59 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self track-player-ry) #f) - (set! (-> self track-player-tilt) #f) - (set! (-> self des-ry) (-> self ry)) - (set! (-> self des-tilt) (-> self tilt)) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self track-player-ry) #f) + (set! (-> self track-player-tilt) #f) + (set! (-> self des-ry) (-> self ry)) + (set! (-> self des-tilt) (-> self tilt)) + (none) + ) :trans - (behavior () - (dummy-20 self) - (none) - ) + (behavior () (dummy-20 self) (none)) :code (behavior () - (ja-channel-push! 1 30) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root-override trans quad)) - (set! (-> s5-0 quad) (-> gp-0 quad)) - (set! (-> s5-0 y) (+ 131072.0 (-> s5-0 y))) - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-6 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length + (ja-channel-push! 1 30) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root-override trans quad)) + (set! (-> s5-0 quad) (-> gp-0 quad)) + (set! (-> s5-0 y) (+ 131072.0 (-> s5-0 y))) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-6 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) data 0 length) -1)) + ) + (set! (-> a0-6 param 1) 0.5) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (let* ((f0-6 (ja-frame-num 0)) + (v1-18 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (f0-7 (/ f0-6 (the float (+ (-> v1-18 data 0 length) -1)))) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (set-vector! (-> self root-override scale) 1.0 (- 1.0 f0-7) 1.0 1.0) + (vector-lerp! s4-0 gp-0 s5-0 f0-7) + (TODO-RENAME-30 (-> self root-override) s4-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) 0.5) + (joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-6 param 1) 0.5) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) + (TODO-RENAME-30 (-> self root-override) gp-0) ) - (until (ja-done? 0) - (let* ((f0-6 (ja-frame-num 0)) - (v1-18 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - (f0-7 (/ f0-6 (the float (+ (-> v1-18 data 0 length) -1)))) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (set-vector! (-> self root-override scale) 1.0 (- 1.0 f0-7) 1.0 1.0) - (vector-lerp! s4-0 gp-0 s5-0 f0-7) - (TODO-RENAME-30 (-> self root-override) s4-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) 0.5) - (joint-control-channel-group-eval! - a0-10 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (TODO-RENAME-30 (-> self root-override) gp-0) + (set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0) + (go junglesnake-sleeping) + (none) ) - (set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0) - (go junglesnake-sleeping) - (none) - ) :post (the-as (function none :behavior junglesnake) transform-post) ) @@ -940,283 +671,228 @@ junglesnake-default-event-handler (defstate junglesnake-die (junglesnake) :event (the-as - (function process int symbol event-message-block object :behavior junglesnake) - process-drawable-death-event-handler - ) + (function process int symbol event-message-block object :behavior junglesnake) + process-drawable-death-event-handler + ) :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root-override)) - (ja-channel-push! 1 45) - (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 + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root-override)) + (ja-channel-push! 1 45) + (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!) ) - -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! - ) + (dummy-18 self) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group-eval! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (dummy-18 self) - (none) - ) :post (the-as (function none :behavior junglesnake) ja-post) ) (defmethod dummy-23 junglesnake ((obj junglesnake)) (when (not (-> obj is-lethal?)) - (set! (-> obj is-lethal?) #t) - (let - ((v1-5 - (-> - (the-as collide-shape-prim-group (-> obj root-override root-prim)) - prims - 0 - ) + (set! (-> obj is-lethal?) #t) + (let ((v1-5 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) + (set! (-> v1-5 prim-core action) (logand -2 (-> v1-5 prim-core action))) ) - ) - (set! (-> v1-5 prim-core action) (logand -2 (-> v1-5 prim-core action))) ) - ) 0 (none) ) (defmethod dummy-24 junglesnake ((obj junglesnake)) (when (-> obj is-lethal?) - (set! (-> obj is-lethal?) #f) - (let - ((v1-4 - (-> - (the-as collide-shape-prim-group (-> obj root-override root-prim)) - prims - 0 - ) + (set! (-> obj is-lethal?) #f) + (let ((v1-4 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) + (logior! (-> v1-4 prim-core action) 1) ) - ) - (logior! (-> v1-4 prim-core action) 1) + (dummy-45 (-> obj root-override)) ) - (dummy-45 (-> obj root-override)) - ) 0 (none) ) -(define - *junglesnake-twist-max-deltas* - (new 'static 'array float 28 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 546.13336 - 1092.2667 - 1638.4 - 2184.5334 - 2730.6667 - 3276.8 - 3822.9333 - 4369.067 - 4915.2 - 5461.3335 - 6007.467 - 6553.6 - 7099.7334 - 7645.8667 - 8192.0 - 8738.134 - 9284.267 - 9830.4 - 10376.533 - 0.0 - 0.0 - 0.0 - ) - ) +(define *junglesnake-twist-max-deltas* (new 'static 'array float 28 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 546.13336 + 1092.2667 + 1638.4 + 2184.5334 + 2730.6667 + 3276.8 + 3822.9333 + 4369.067 + 4915.2 + 5461.3335 + 6007.467 + 6553.6 + 7099.7334 + 7645.8667 + 8192.0 + 8738.134 + 9284.267 + 9830.4 + 10376.533 + 0.0 + 0.0 + 0.0 + ) + ) (defmethod dummy-22 junglesnake ((obj junglesnake) (arg0 float)) (let ((f0-0 0.0)) - (dotimes (v1-0 24) - (let ((a2-2 (-> obj twist-joints v1-0))) - (set! (-> a2-2 ry) arg0) - (set! (-> a2-2 joint-index) (- 26 v1-0)) - (let ((f1-1 (-> *junglesnake-twist-max-deltas* v1-0))) - (set! (-> a2-2 drag-delta-ry) (- f1-1 f0-0)) - (set! f0-0 f1-1) + (dotimes (v1-0 24) + (let ((a2-2 (-> obj twist-joints v1-0))) + (set! (-> a2-2 ry) arg0) + (set! (-> a2-2 joint-index) (- 26 v1-0)) + (let ((f1-1 (-> *junglesnake-twist-max-deltas* v1-0))) + (set! (-> a2-2 drag-delta-ry) (- f1-1 f0-0)) + (set! f0-0 f1-1) + ) + ) ) - ) ) - ) #f ) (defmethod dummy-21 junglesnake ((obj junglesnake)) (dotimes (v1-0 3) - (let ((a1-2 (-> obj tilt-joints v1-0))) - (set! (-> a1-2 joint-index) (+ v1-0 23)) - (set! (-> a1-2 flip-it) #f) + (let ((a1-2 (-> obj tilt-joints v1-0))) + (set! (-> a1-2 joint-index) (+ v1-0 23)) + (set! (-> a1-2 flip-it) #f) + ) ) - ) (let ((v1-3 (the-as object (&-> obj stack 524)))) - (set! (-> (the-as junglesnake-tilt-joint v1-3) flip-it) #t) - ) + (set! (-> (the-as junglesnake-tilt-joint v1-3) flip-it) #t) + ) (let ((v1-4 (the-as object (&-> obj stack 476))) (v0-0 #t) ) - (set! (-> (the-as junglesnake-twist-joint v1-4) ry) (the-as float v0-0)) - v0-0 - ) + (set! (-> (the-as junglesnake-twist-joint v1-4) ry) (the-as float v0-0)) + v0-0 + ) ) (defmethod init-from-entity! junglesnake ((obj junglesnake) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) - (set! (-> s2-0 transform-index) 25) - (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) - (set! (-> s2-1 transform-index) 21) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) - (set! (-> s2-2 transform-index) 20) - (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-2) - ) - (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 1) - (set! (-> s2-3 transform-index) 19) - (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-3) - ) - (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 1) - (set! (-> s2-4 transform-index) 18) - (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-4) - ) - (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 1)) - (set! (-> s2-5 prim-core offense) 1) - (set! (-> s2-5 transform-index) 17) - (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-5) - ) - (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 1)) - (set! (-> s2-6 prim-core offense) 1) - (set! (-> s2-6 transform-index) 16) - (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-6) - ) - (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 1)) - (set! (-> s2-7 prim-core offense) 1) - (set! (-> s2-7 transform-index) 15) - (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-7) - ) - (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 1)) - (set! (-> s2-8 prim-core offense) 1) - (set! (-> s2-8 transform-index) 14) - (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-8) - ) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 transform-index) 25) + (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 transform-index) 21) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 1)) + (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 transform-index) 20) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-2) + ) + (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 1)) + (set! (-> s2-3 prim-core offense) 1) + (set! (-> s2-3 transform-index) 19) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-3) + ) + (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 1)) + (set! (-> s2-4 prim-core offense) 1) + (set! (-> s2-4 transform-index) 18) + (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-4) + ) + (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 1)) + (set! (-> s2-5 prim-core offense) 1) + (set! (-> s2-5 transform-index) 17) + (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-5) + ) + (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 1)) + (set! (-> s2-6 prim-core offense) 1) + (set! (-> s2-6 transform-index) 16) + (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-6) + ) + (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 1)) + (set! (-> s2-7 prim-core offense) 1) + (set! (-> s2-7 transform-index) 15) + (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-7) + ) + (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 1)) + (set! (-> s2-8 prim-core offense) 1) + (set! (-> s2-8 transform-index) 14) + (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-8) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *junglesnake-sg* '()) - (set! - (-> obj fact) - (new - 'process - 'fact-info-enemy - obj - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 173) obj) - ) + (set! (-> obj fact) + (new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 173) obj)) (set! (-> obj is-lethal?) #f) (set! (-> obj ry) (y-angle (-> obj root-override))) (set! (-> obj des-ry) (-> obj ry)) diff --git a/goal_src/levels/maincave/gnawer.gc b/goal_src/levels/maincave/gnawer.gc index d43bc410eb..f97798358c 100644 --- a/goal_src/levels/maincave/gnawer.gc +++ b/goal_src/levels/maincave/gnawer.gc @@ -485,7 +485,7 @@ (defmethod dummy-23 gnawer ((obj gnawer)) (when (not (-> obj hidden?)) (set! (-> obj hidden?) #t) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) (logclear! (-> obj mask) (process-mask attackable)) (set! (-> obj skel postbind-function) #f) (set! (-> obj root-override trans quad) (-> obj post-trans quad)) @@ -502,10 +502,8 @@ (when (-> obj hidden?) (set! (-> obj hidden?) #f) (restore-collide-with-as (-> obj root-override)) - (set! (-> obj skel postbind-function) - (the-as (function pointer int process-drawable none) gnawer-joint-callback) - ) - (set! (-> obj draw status) (logand -3 (-> obj draw status))) + (set! (-> obj skel postbind-function) gnawer-joint-callback) + (logclear! (-> obj draw status) (draw-status drwf01)) ) (none) ) @@ -1415,7 +1413,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (process-entity-status! self (entity-perm-status complete) #t) (dummy-27 self) (let ((v1-10 (-> self entity extra perm))) @@ -1554,7 +1552,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (case (get-reminder (get-task-control (game-task cave-gnawers)) 3) (((-> self gnawer-id)) (when (not (task-complete? *game-info* (-> self entity extra perm task))) diff --git a/goal_src/levels/maincave/mother-spider.gc b/goal_src/levels/maincave/mother-spider.gc index fb0524a834..184103414a 100644 --- a/goal_src/levels/maincave/mother-spider.gc +++ b/goal_src/levels/maincave/mother-spider.gc @@ -196,7 +196,7 @@ (defstate wait-for-children (mother-spider) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (until (not (-> self child)) (suspend) ) @@ -385,8 +385,8 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) 2)))) - (set! (-> self draw status) (the-as uint v0-0)) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) ) @@ -444,7 +444,7 @@ (defmethod TODO-RENAME-24 mother-spider ((obj mother-spider)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -852,21 +852,19 @@ ) 0 (set! (-> self mode) (the-as uint 0)) - (set! (-> self skel postbind-function) (the-as (function pointer int process-drawable none) 0)) + (set! (-> self skel postbind-function) (the-as (function process-drawable none) 0)) (clear-collide-with-as (-> self root-override)) (shut-down! (-> self neck)) (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (none) ) :exit (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self skel postbind-function) - (the-as (function pointer int process-drawable none) mother-spider-full-joint-callback) - ) + (set! (-> self skel postbind-function) mother-spider-full-joint-callback) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -1773,7 +1771,7 @@ (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) #f) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (-> self child) (suspend) ) @@ -1864,7 +1862,7 @@ (or (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) diff --git a/goal_src/levels/misty/quicksandlurker.gc b/goal_src/levels/misty/quicksandlurker.gc index ae769e4d30..12ad42018a 100644 --- a/goal_src/levels/misty/quicksandlurker.gc +++ b/goal_src/levels/misty/quicksandlurker.gc @@ -5,398 +5,538 @@ ;; name in dgo: quicksandlurker ;; dgos: L1, MIS -(define-extern *quicksandlurker-sg* skeleton-group) - -(declare-type quicksandlurker process-drawable) -(declare-type quicksandlurker-missile process-drawable) - -(define-extern quicksandlurker-idle (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-track (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-wait (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-popup (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-attack (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-hide (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-die (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-victory (state quicksandlurker)) ;; unknown type -(define-extern quicksandlurker-missile-idle (state quicksandlurker-missile)) ;; unknown type -(define-extern quicksandlurker-missile-impact (state quicksandlurker-missile)) ;; unknown type -(define-extern quicksandlurker-yawn (state quicksandlurker)) ;; unknown type - -;; TODO - I skipped a function that was unused, and i moved the type defs to make the parent-override work - ;; DECOMP BEGINS -(set! - (-> *part-group-id-table* 198) - (new 'static 'sparticle-launch-group - :length 48 - :duration #xbb8 - :linger-duration #x5dc - :name "group-quicksandlurker-missile" - :launcher - (new 'static 'inline-array sparticle-group-item 48 - (sp-item 2481 :flags (launch-asap) :binding 2479) - (sp-item 2479 :flags (start-dead) :binding 2480) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) +(set! (-> *part-group-id-table* 198) (new 'static 'sparticle-launch-group + :length 48 + :duration #xbb8 + :linger-duration #x5dc + :name "group-quicksandlurker-missile" + :launcher + (new 'static 'inline-array sparticle-group-item 48 + (sp-item 2481 :flags (launch-asap) :binding 2479) + (sp-item 2479 :flags (start-dead) :binding 2480) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + ) + :bounds (new 'static 'sphere :w 12288.0) + ) + ) + +(set! (-> *part-id-table* 2481) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 9 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.01)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit3) + (sp-func spt-func 'sparticle-track-root-prim) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2479) (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 2.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.006666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b 0.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 81) + (sp-launcher-by-id spt-next-launcher 2482) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.1)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2482) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2480) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 1.0 5.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-accel-y -2.7306666) + (sp-flt spt-friction 0.97) + (sp-int-plain-rnd spt-timer 30 119 1) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 2482) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 199) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x5dc + :name "group-quicksandlurker-pre-missile" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2483)) + :bounds (new 'static 'sphere :w 12288.0) + ) + ) + +(set! (-> *part-id-table* 2483) (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-scale-x (meters 0.5) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 32.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.006666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-accel-y -0.68266666) + (sp-rnd-flt spt-friction 0.85 0.05 1.0) + (sp-int-plain-rnd spt-timer 30 119 1) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 2482) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 200) + (new 'static 'sparticle-launch-group + :length 3 + :duration #xa + :linger-duration #x5dc + :name "group-quicksandlurker-missile-impact" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 2484) (sp-item 2485) (sp-item 2486)) + :bounds (new 'static 'sphere :w 12288.0) + ) + ) + +(set! (-> *part-id-table* 2484) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 64.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 32.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.006666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-accel-y -0.68266666) + (sp-rnd-flt spt-friction 0.85 0.05 1.0) + (sp-int-plain-rnd spt-timer 30 119 1) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 2482) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2486) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-r -0.35555556) + (sp-flt spt-fade-g -0.35555556) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.30476192) + (sp-rnd-flt spt-accel-y -0.68266666 0.68266666 1.0) + (sp-int spt-timer 210) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 2482) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2485) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -4.8) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 201) (new 'static 'sparticle-launch-group + :length 16 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-quicksandlurker-hide" + :launcher + (new 'static 'inline-array sparticle-group-item 16 + (sp-item 124 :flags (is-3d) :period 900 :length 63) + (sp-item 125 :period 900 :length 15) + (sp-item 126 :flags (is-3d) :period 900 :length 15) + (sp-item 127 :flags (is-3d) :period 900 :length 15) + (sp-item 128 :period 900 :length 10 :binding 129) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + ) + :bounds + (new 'static 'sphere :y -49152.0 :w 57344.0) + ) + ) + +(set! (-> *part-group-id-table* 202) (new 'static 'sparticle-launch-group + :length 16 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-quicksandlurker-popup" + :launcher + (new 'static 'inline-array sparticle-group-item 16 + (sp-item 124 :flags (is-3d) :period 900 :length 63) + (sp-item 125 :period 900 :length 15) + (sp-item 126 :flags (is-3d) :period 900 :length 15) + (sp-item 127 :flags (is-3d) :period 900 :length 15) + (sp-item 128 :period 900 :length 10 :binding 129) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + ) + :bounds + (new 'static 'sphere :y -49152.0 :w 57344.0) + ) + ) + +(deftype quicksandlurker-missile (process-drawable) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + (:states + quicksandlurker-missile-impact ) - :bounds (new 'static 'sphere :w 12288.0) - ) ) -(set! - (-> *part-id-table* 2481) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 9 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 0.01)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-a 0.0) - (sp-int spt-timer 1200) - (sp-cpuinfo-flags bit3) - (sp-func spt-func 'sparticle-track-root-prim) - (sp-end) + +(defstate quicksandlurker-missile-idle (quicksandlurker-missile) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touched) + (when (cond + ((= (-> arg0 type) target) + (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-1 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-1 mode) 'explode) + (set! (-> a1-3 param 1) (the-as uint a2-1)) + ) + (send-event-function arg0 a1-3) + ) + ) + (else + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 4) + (set! (-> a1-4 message) 'attack) + (set! (-> a1-4 param 0) (-> arg3 param 0)) + (set! (-> a1-4 param 1) (the-as uint 'explode)) + (let ((v1-12 (+ *global-attack-id* 1))) + (set! *global-attack-id* v1-12) + (set! (-> a1-4 param 2) (the-as uint v1-12)) + ) + (set! (-> a1-4 param 3) (the-as uint 0)) + (send-event-function arg0 a1-4) + ) + ) + ) + (send-event (ppointer->process (-> self parent)) 'victory) + (go quicksandlurker-missile-impact) + ) + ) + ) ) - ) - ) - -(set! - (-> *part-id-table* 2479) - (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 2.0) - (sp-flt spt-scale-x (meters 1.0)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.006666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -1.0666667) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-b 0.0) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 81) - (sp-launcher-by-id spt-next-launcher 2482) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.1)) - (sp-end) + :enter + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + :code + (behavior () + (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 1200) + (dummy-33 + (-> self root-override) + (-> self root-override transv) + (-> self root-override root-prim collide-with) + ) + (if (or + (logtest? (-> self root-override status) 8) + (< (vector-vector-distance (-> self root-override trans) (the-as vector (-> self root-override trans-old))) + 40.96 + ) + ) + (go quicksandlurker-missile-impact) + ) + (spawn (-> self part) (-> self root-override trans)) + (find-ground-and-draw-shadow + (-> self root-override trans) + (the-as vector #f) + 8192.0 + (the-as uint 1) + (the-as process #f) + 0.0 + 81920.0 + ) + (suspend) + ) + (dummy-18 self) + (none) ) - ) + :post + (behavior () (dummy-47 (-> self root-override)) (none)) ) -(set! - (-> *part-id-table* 2482) - (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) +(defstate quicksandlurker-missile-impact (quicksandlurker-missile) + :code + (behavior () + (sound-play-by-name + (static-sound-name "sack-land") + (new-sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + (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* 200) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-1 ppointer) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (suspend) + ) + (dummy-18 self) + (none) ) - ) ) -(set! - (-> *part-id-table* 2480) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-rnd-flt spt-num 1.0 5.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) - (sp-flt spt-scalevel-x (meters -0.0026666666)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -1.0666667) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-accel-y -2.7306666) - (sp-flt spt-friction 0.97) - (sp-int-plain-rnd spt-timer 30 119 1) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 60) - (sp-launcher-by-id spt-next-launcher 2482) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) - (sp-end) +(deftype quicksandlurker-missile-init-data (structure) + ((position vector :offset-assert 0) + (velocity vector :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + + +(defbehavior quicksandlurker-missile-init-by-other quicksandlurker-missile ((arg0 quicksandlurker-missile-init-data) (arg1 entity)) + (set! (-> self entity) arg1) + (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s4-0 collide-with) (the-as uint 2973)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 4) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 1)) + (set! (-> s5-0 event-self) 'touched) + (set! (-> self root-override) s5-0) ) - ) + (set! (-> self root-override trans quad) (-> arg0 position quad)) + (set! (-> self root-override quat vec quad) + (-> (the-as process-drawable (-> self parent 0)) root quat vec quad) + ) + (vector-identity! (-> self root-override scale)) + (set! (-> self root-override transv quad) (-> arg0 velocity quad)) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 198) self)) + (go quicksandlurker-missile-idle) + (none) ) -(set! - (-> *part-group-id-table* 199) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x5dc - :name "group-quicksandlurker-pre-missile" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2483)) - :bounds (new 'static 'sphere :w 12288.0) - ) - ) - -(set! - (-> *part-id-table* 2483) - (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-scale-x (meters 0.5) (meters 0.2) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 32.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters -0.006666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.7111111) - (sp-flt spt-fade-g -0.7111111) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-accel-y -0.68266666) - (sp-rnd-flt spt-friction 0.85 0.05 1.0) - (sp-int-plain-rnd spt-timer 30 119 1) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 2482) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) - (sp-end) +(defun spawn-quicksandlurker-missile ((arg0 process) (arg1 vector) (arg2 vector) (arg3 entity)) + (let ((s5-0 (new 'stack-no-clear 'quicksandlurker-missile-init-data))) + (set! (-> s5-0 position) arg1) + (set! (-> s5-0 velocity) arg2) + (let ((s3-0 (get-process *default-dead-pool* quicksandlurker-missile #x4000))) + (when s3-0 + (let ((t9-1 (method-of-type quicksandlurker-missile activate))) + (t9-1 (the-as quicksandlurker-missile s3-0) arg0 'quicksandlurker-missile (the-as pointer #x70004000)) + ) + (run-now-in-process s3-0 quicksandlurker-missile-init-by-other s5-0 arg3) + (-> s3-0 ppointer) + ) + ) ) - ) + 0 + (none) ) -(set! - (-> *part-group-id-table* 200) - (new 'static 'sparticle-launch-group - :length 3 - :duration #xa - :linger-duration #x5dc - :name "group-quicksandlurker-missile-impact" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 2484) - (sp-item 2485) - (sp-item 2486) - ) - :bounds (new 'static 'sphere :w 12288.0) - ) - ) - -(set! - (-> *part-id-table* 2484) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 64.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 32.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.006666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.7111111) - (sp-flt spt-fade-g -0.7111111) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-accel-y -0.68266666) - (sp-rnd-flt spt-friction 0.85 0.05 1.0) - (sp-int-plain-rnd spt-timer 30 119 1) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 2482) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2486) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 6.0) - (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-fade-r -0.35555556) - (sp-flt spt-fade-g -0.35555556) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-fade-a -0.30476192) - (sp-rnd-flt spt-accel-y -0.68266666 0.68266666 1.0) - (sp-int spt-timer 210) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 60) - (sp-launcher-by-id spt-next-launcher 2482) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) - -(set! - (-> *part-id-table* 2485) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 32.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 128.0 32.0 1.0) - (sp-flt spt-a 96.0) - (sp-flt spt-fade-a -4.8) - (sp-int spt-timer 15) - (sp-cpuinfo-flags bit2) - (sp-end) - ) - ) - ) - -(set! - (-> *part-group-id-table* 201) - (new 'static 'sparticle-launch-group - :length 16 - :duration #x384 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-quicksandlurker-hide" - :launcher - (new 'static 'inline-array sparticle-group-item 16 - (sp-item 124 :flags (is-3d) :period 900 :length 63) - (sp-item 125 :period 900 :length 15) - (sp-item 126 :flags (is-3d) :period 900 :length 15) - (sp-item 127 :flags (is-3d) :period 900 :length 15) - (sp-item 128 :period 900 :length 10 :binding 129) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - ) - :bounds - (new 'static 'sphere :y -49152.0 :w 57344.0) - ) - ) - -(set! - (-> *part-group-id-table* 202) - (new 'static 'sparticle-launch-group - :length 16 - :duration #x384 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-quicksandlurker-popup" - :launcher - (new 'static 'inline-array sparticle-group-item 16 - (sp-item 124 :flags (is-3d) :period 900 :length 63) - (sp-item 125 :period 900 :length 15) - (sp-item 126 :flags (is-3d) :period 900 :length 15) - (sp-item 127 :flags (is-3d) :period 900 :length 15) - (sp-item 128 :period 900 :length 10 :binding 129) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - (sp-item 129 :flags (start-dead) :period 900 :length 120) - ) - :bounds - (new 'static 'sphere :y -49152.0 :w 57344.0) - ) - ) - -;; Manually Placed (deftype quicksandlurker (process-drawable) ((root-override collide-shape :offset 112) (original-position vector :inline :offset-assert 176) @@ -410,234 +550,17 @@ :method-count-assert 20 :size-assert #xd4 :flag-assert #x14007000d4 + (:states + quicksandlurker-attack + quicksandlurker-die + quicksandlurker-hide + quicksandlurker-popup + quicksandlurker-track + quicksandlurker-victory + quicksandlurker-wait + ) ) -(deftype quicksandlurker-missile (process-drawable) - ((parent-override (pointer quicksandlurker) :offset 12) - (root-override collide-shape-moving :offset 112) - ) - :heap-base #x40 - :method-count-assert 20 - :size-assert #xb0 - :flag-assert #x14004000b0 - ) - - -(defstate quicksandlurker-missile-idle (quicksandlurker-missile) - :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touched) - (when (cond - ((= (-> arg0 type) target) - (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-1 (new 'static 'attack-info :mask #x20))) - (set! (-> a2-1 mode) 'explode) - (set! (-> a1-3 param 1) (the-as uint a2-1)) - ) - (send-event-function arg0 a1-3) - ) - ) - (else - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 4) - (set! (-> a1-4 message) 'attack) - (set! (-> a1-4 param 0) (-> arg3 param 0)) - (set! (-> a1-4 param 1) (the-as uint 'explode)) - (let ((v1-12 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-12) - (set! (-> a1-4 param 2) (the-as uint v1-12)) - ) - (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function arg0 a1-4) - ) - ) - ) - (send-event (ppointer->process (-> self parent-override)) 'victory) - (go quicksandlurker-missile-impact) - ) - ) - ) - ) - :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) - :code - (behavior () - (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 1200) - (dummy-33 - (-> self root-override) - (-> self root-override transv) - (-> self root-override root-prim collide-with) - ) - (if - (or - (logtest? (-> self root-override status) 8) - (< - (vector-vector-distance - (-> self root-override trans) - (the-as vector (-> self root-override trans-old)) - ) - 40.96 - ) - ) - (go quicksandlurker-missile-impact) - ) - (spawn (-> self part) (-> self root-override trans)) - (find-ground-and-draw-shadow - (-> self root-override trans) - (the-as vector #f) - 8192.0 - (the-as uint 1) - (the-as process #f) - 0.0 - 81920.0 - ) - (suspend) - ) - (dummy-18 self) - (none) - ) - :post - (behavior () - (dummy-47 (-> self root-override)) - (none) - ) - ) - -(defstate quicksandlurker-missile-impact (quicksandlurker-missile) - :code - (behavior () - (sound-play-by-name - (static-sound-name "sack-land") - (new-sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self root-override trans)) - ) - (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* 200) - -1 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-1 ppointer) - ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (suspend) - ) - (dummy-18 self) - (none) - ) - ) - -(deftype quicksandlurker-missile-init-data (structure) - ((position vector :offset-assert 0) - (velocity vector :offset-assert 4) - ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 - ) - - -(defbehavior - quicksandlurker-missile-init-by-other quicksandlurker-missile - ((arg0 quicksandlurker-missile-init-data) (arg1 entity)) - (set! (-> self entity) arg1) - (let - ((s5-0 - (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 2973)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 1)) - (set! (-> s5-0 event-self) 'touched) - (set! (-> self root-override) s5-0) - ) - (set! (-> self root-override trans quad) (-> arg0 position quad)) - (set! - (-> self root-override quat vec quad) - (-> self parent-override 0 root-override quat vec quad) - ) - (vector-identity! (-> self root-override scale)) - (set! (-> self root-override transv quad) (-> arg0 velocity quad)) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 198) self) - ) - (go quicksandlurker-missile-idle) - (none) - ) - -(defun - spawn-quicksandlurker-missile - ((arg0 quicksandlurker) (arg1 vector) (arg2 vector) (arg3 entity)) - (let ((s5-0 (new 'stack-no-clear 'quicksandlurker-missile-init-data))) - (set! (-> s5-0 position) arg1) - (set! (-> s5-0 velocity) arg2) - (let - ((s3-0 (get-process *default-dead-pool* quicksandlurker-missile #x4000))) - (when s3-0 - (let ((t9-1 (method-of-type quicksandlurker-missile activate))) - (t9-1 - (the-as quicksandlurker-missile s3-0) - arg0 - 'quicksandlurker-missile - (the-as pointer #x70004000) - ) - ) - (run-now-in-process s3-0 quicksandlurker-missile-init-by-other s5-0 arg3) - (-> s3-0 ppointer) - ) - ) - ) - 0 - (none) - ) (defskelgroup *quicksandlurker-sg* quicksandlurker 0 @@ -649,174 +572,116 @@ (defbehavior orient-to-face-target quicksandlurker () (if *target* - (seek-to-point-toward-point! - (-> self root-override) - (-> *target* control trans) - 65536.0 - 60 - ) - ) + (seek-to-point-toward-point! (-> self root-override) (-> *target* control trans) 65536.0 60) + ) ) ;; ERROR: function has no type analysis. Cannot decompile. -(defun - intersects-nav-mesh? - ((arg0 quicksandlurker) (arg1 int) (arg2 (inline-array vector)) (arg3 vector)) +(defun intersects-nav-mesh? ((arg0 quicksandlurker) (arg1 int) (arg2 (inline-array vector)) (arg3 vector)) (if (dummy-16 arg0 arg1 arg2 arg3) - #t - ) + #t + ) ) -(defbehavior - quicksandlurker-default-event-handler quicksandlurker - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('attack) +(defbehavior quicksandlurker-default-event-handler quicksandlurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) enter-state (go quicksandlurker-die) ) - (('victory) - (go quicksandlurker-victory) + (('victory) + (go quicksandlurker-victory) + ) ) - ) ) (defun inc-angle ((arg0 (pointer float)) (arg1 float)) (+! (-> arg0 0) arg1) (when (< 65536.0 (-> arg0 0)) - (let ((f0-4 (+ -65536.0 (-> arg0 0)))) - (set! (-> arg0 0) f0-4) - f0-4 + (let ((f0-4 (+ -65536.0 (-> arg0 0)))) + (set! (-> arg0 0) f0-4) + f0-4 + ) ) - ) ) (defbehavior quicksandlurker-post quicksandlurker () - (inc-angle - (&-> self theta-angle) - (* 9102.223 (-> *display* seconds-per-frame)) - ) - (inc-angle - (&-> self bob-angle) - (* 14563.556 (-> *display* seconds-per-frame)) - ) + (inc-angle (&-> self theta-angle) (* 9102.223 (-> *display* seconds-per-frame))) + (inc-angle (&-> self bob-angle) (* 14563.556 (-> *display* seconds-per-frame))) (let ((f28-0 (* (-> self radial-offset) (cos (-> self theta-angle)))) (f30-2 (* 0.0 (sin (-> self theta-angle)))) ) - (let ((f0-10 (* (-> self radial-offset) (sin (-> self theta-angle))))) - (set! - (-> self root-override trans x) - (+ (-> self original-position x) f28-0) - ) - (set! - (-> self root-override trans z) - (+ (-> self original-position z) f0-10) - ) - ) - (let* ((v1-4 (-> self mud-entity)) - (a0-5 (if v1-4 - (-> v1-4 extra process) + (let ((f0-10 (* (-> self radial-offset) (sin (-> self theta-angle))))) + (set! (-> self root-override trans x) (+ (-> self original-position x) f28-0)) + (set! (-> self root-override trans z) (+ (-> self original-position z) f0-10)) + ) + (let* ((v1-4 (-> self mud-entity)) + (a0-5 (if v1-4 + (-> v1-4 extra process) + ) ) ) + (if a0-5 + (set! (-> self root-override trans y) + (+ (get-ripple-height (the-as water-anim a0-5) (-> self root-override trans)) f30-2 (-> self y-offset)) + ) + (set! (-> self root-override trans y) (+ (-> self original-position y) f30-2 (-> self y-offset))) ) - (if a0-5 - (set! - (-> self root-override trans y) - (+ - (get-ripple-height - (the-as water-anim a0-5) - (-> self root-override trans) - ) - f30-2 - (-> self y-offset) - ) ) - (set! - (-> self root-override trans y) - (+ (-> self original-position y) f30-2 (-> self y-offset)) - ) - ) ) - ) (transform-post) (none) ) (defbehavior quicksandlurker-check-hide-transition quicksandlurker () (when *target* - (if - (and - (and - *target* - (>= - 20480.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (if (and + (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (!= (-> *target* next-state name) 'target-flop) + ) + (go quicksandlurker-hide) + ) + 0.0 + (let ((a0-2 (-> self nav)) + (a1-1 (-> *target* control trans)) + ) + (when (if (dummy-16 a0-2 a1-1) + #t + ) + (if (< (- (-> *target* control trans y) (-> self original-position y)) 0.0) + (go quicksandlurker-hide) + ) ) - ) ) - (!= (-> *target* next-state name) 'target-flop) - ) - (go quicksandlurker-hide) ) - 0.0 - (let ((a0-2 (-> self nav)) - (a1-1 (-> *target* control trans)) - ) - (when (if (dummy-16 a0-2 a1-1) - #t - ) - (if (< (- (-> *target* control trans y) (-> self original-position y)) 0.0) - (go quicksandlurker-hide) - ) - ) - ) - ) (none) ) (defstate quicksandlurker-idle (quicksandlurker) :event - (the-as - (function process int symbol event-message-block object :behavior quicksandlurker) - #f - ) + (the-as (function process int symbol event-message-block object :behavior quicksandlurker) #f) :enter - (behavior () - (logior! (-> self draw status) 2) - (none) - ) + (behavior () (logior! (-> self draw status) (draw-status drwf01)) (none)) :exit - (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (none) - ) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () - (if - (and - *target* - (>= - 163840.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (go quicksandlurker-wait) + (if (and + *target* + (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (go quicksandlurker-wait) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior quicksandlurker) ja-post) ) @@ -826,173 +691,89 @@ quicksandlurker-default-event-handler :trans (behavior () - (cond - ((and - *target* - (>= - 81920.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (cond + ((and *target* (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (set! (-> self y-offset) 1228.8) + (go quicksandlurker-track) + ) + ((or + (not *target*) + (< 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (set! (-> self y-offset) (seek (-> self y-offset) -6553.6 (* 20480.0 (-> *display* seconds-per-frame)))) + (if (= (-> self y-offset) -6553.6) + (go quicksandlurker-idle) + ) + ) + (else + (set! (-> self y-offset) (seek (-> self y-offset) 1228.8 (* 20480.0 (-> *display* seconds-per-frame)))) ) - ) ) - (set! (-> self y-offset) 1228.8) - (go quicksandlurker-track) - ) - ((or - (not *target*) - (< - 163840.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (set! - (-> self y-offset) - (seek - (-> self y-offset) - -6553.6 - (* 20480.0 (-> *display* seconds-per-frame)) - ) - ) - (if (= (-> self y-offset) -6553.6) - (go quicksandlurker-idle) - ) - ) - (else - (set! - (-> self y-offset) - (seek - (-> self y-offset) - 1228.8 - (* 20480.0 (-> *display* seconds-per-frame)) - ) - ) - ) + (none) ) - (none) - ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 1.5 2.0)))) - (s5-0 5) - (s4-0 0) - ) - (ja-channel-push! 1 30) - (while #t - (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> a0-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - data - 0 - length - ) - -1 + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 1.5 2.0)))) + (s5-0 5) + (s4-0 0) ) - ) - ) - (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 2)) - 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! - ) - ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (+! s4-0 1) - (when (< s5-0 s4-0) - (set! s4-0 0) - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 3)) - ) - (set! - (-> a0-6 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length + (ja-channel-push! 1 30) + (while #t + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> a0-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) 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 2)) 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!) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (+! s4-0 1) + (when (< s5-0 s4-0) + (set! s4-0 0) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) + (set! (-> a0-6 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1)) + ) + (set! (-> a0-6 param 1) 1.0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) ) - -1 - ) ) - ) - (set! (-> a0-6 param 1) 1.0) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 3)) - num-func-seek! - ) - ) - (until (ja-done? 0) + (orient-to-face-target) + (let ((v1-55 (-> self skel root-channel 0))) + (set! (-> v1-55 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + ) + (let ((v1-58 (-> self skel root-channel 0))) + (set! (-> v1-58 num-func) num-func-identity) + (set! (-> v1-58 frame-num) 0.0) + ) (suspend) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 param 0) - (the float (+ (-> a0-7 frame-group data 0 length) -1)) - ) - (set! (-> a0-7 param 1) 1.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) ) - ) ) - (orient-to-face-target) - (let ((v1-55 (-> self skel root-channel 0))) - (set! - (-> v1-55 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - ) - (let ((v1-58 (-> self skel root-channel 0))) - (set! (-> v1-58 num-func) num-func-identity) - (set! (-> v1-58 frame-num) 0.0) - ) - (suspend) - ) + (none) ) - (none) - ) :post quicksandlurker-post ) @@ -1002,52 +783,26 @@ quicksandlurker-default-event-handler :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 3)) - ) - (set! - (-> a0-0 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length + (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!) ) - -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! - ) + (go quicksandlurker-wait) + (none) ) - (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 quicksandlurker-wait) - (none) - ) :post quicksandlurker-post ) @@ -1057,143 +812,87 @@ quicksandlurker-default-event-handler :trans (behavior () - (if - (or - (not *target*) - (< - 81920.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (go quicksandlurker-wait) + (if (or + (not *target*) + (< 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (go quicksandlurker-wait) + ) + (quicksandlurker-check-hide-transition) + (none) ) - (quicksandlurker-check-hide-transition) - (none) - ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) - (s5-0 1) - (s4-0 0) - ) - (while #t - (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) - (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! (-> self state-time) (-> *display* base-frame-counter)) + (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) + (s5-0 1) + (s4-0 0) ) - ) + (while #t + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) + (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!) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (+! s4-0 1) + (when (>= s4-0 s5-0) + (if (logtest? (-> self draw status) (draw-status drwf03)) + (go quicksandlurker-attack) + ) + ) + ) + (orient-to-face-target) + (let ((v1-39 (-> self skel root-channel 0))) + (set! (-> v1-39 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + ) + (let ((v1-42 (-> self skel root-channel 0))) + (set! (-> v1-42 num-func) num-func-identity) + (set! (-> v1-42 frame-num) 0.0) + ) + (suspend) ) - (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! - ) - ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (+! s4-0 1) - (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) 8) - (go quicksandlurker-attack) - ) - ) ) - (orient-to-face-target) - (let ((v1-39 (-> self skel root-channel 0))) - (set! - (-> v1-39 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - ) - (let ((v1-42 (-> self skel root-channel 0))) - (set! (-> v1-42 num-func) num-func-identity) - (set! (-> v1-42 frame-num) 0.0) - ) - (suspend) - ) + (none) ) - (none) - ) :post quicksandlurker-post ) (defbehavior quicksandlurker-spit quicksandlurker () (let ((gp-0 (new-stack-vector0))) - (let ((s5-0 (new-stack-vector0))) - (set! - (-> gp-0 quad) - (-> - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)) - quad + (let ((s5-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)) quad)) + (vector-! s5-0 (target-pos 5) gp-0) + (let ((f1-0 (vector-xz-length s5-0))) + (set! (-> s5-0 y) (fmin (-> s5-0 y) (* 0.5 f1-0))) + ) + (vector-normalize! s5-0 49152.0) + (spawn-quicksandlurker-missile self gp-0 s5-0 (-> self entity)) + ) + (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 (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* 199) -1 #f #f #f gp-0) + (-> s5-1 ppointer) + ) ) - ) - (vector-! s5-0 (target-pos 5) gp-0) - (let ((f1-0 (vector-xz-length s5-0))) - (set! (-> s5-0 y) (fmin (-> s5-0 y) (* 0.5 f1-0))) - ) - (vector-normalize! s5-0 49152.0) - (spawn-quicksandlurker-missile self gp-0 s5-0 (-> self entity)) ) - (let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000))) - (when s5-1 - (let ((t9-6 (method-of-type part-tracker activate))) - (t9-6 - (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* 199) - -1 - #f - #f - #f - gp-0 - ) - (-> s5-1 ppointer) - ) - ) - ) ) (defstate quicksandlurker-attack (quicksandlurker) @@ -1203,61 +902,35 @@ quicksandlurker-check-hide-transition :code (behavior () - (let ((gp-0 #f) - (f30-0 51.0) - ) - (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 + (let ((gp-0 #f) + (f30-0 51.0) + ) + (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) + (orient-to-face-target) + (when (and (not gp-0) (>= (ja-aframe-num 0) f30-0)) + (set! gp-0 #t) + (quicksandlurker-spit) + ) + (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!) + ) ) - ) ) - (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) - (orient-to-face-target) - (when (and (not gp-0) (>= (ja-aframe-num 0) f30-0)) - (set! gp-0 #t) - (quicksandlurker-spit) - ) - (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 quicksandlurker-track) + (none) ) - (go quicksandlurker-track) - (none) - ) :post quicksandlurker-post ) @@ -1269,102 +942,50 @@ quicksandlurker-check-hide-transition :code (behavior () - (ja-channel-push! 1 60) - (cond - ((rand-vu-percent? 0.5) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 + (ja-channel-push! 1 60) + (cond + ((rand-vu-percent? 0.5) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) 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 6)) num-func-seek!) ) - ) - ) - (set! (-> a0-2 param 1) 1.0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim (-> self draw art-group data 6)) - 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! - ) - ) - ) - ) - (else - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-5 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length - ) - -1 + (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!) + ) ) + ) + (else + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-5 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) data 0 length) -1)) + ) + (set! (-> a0-5 param 1) 1.0) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim (-> self draw art-group data 7)) 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!) + ) + ) ) - ) - (set! (-> a0-5 param 1) 1.0) - (set! (-> a0-5 frame-num) 0.0) - (joint-control-channel-group! - a0-5 - (the-as art-joint-anim (-> self draw art-group data 7)) - 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! - ) - ) - ) - ) + (go quicksandlurker-track) + (none) ) - (go quicksandlurker-track) - (none) - ) :post quicksandlurker-post ) @@ -1373,125 +994,80 @@ :event quicksandlurker-default-event-handler :enter - (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) :exit - (behavior () - (restore-collide-with-as (-> self root-override)) - (none) - ) + (behavior () (restore-collide-with-as (-> self root-override)) (none)) :trans (behavior () - (if (not *target*) - (go quicksandlurker-wait) - ) - (let ((a0-0 (-> self nav)) - (a1-0 (-> *target* control trans)) - ) - (cond - ((or (if (dummy-16 a0-0 a1-0) - #t - ) - (and - *target* - (>= - 16384.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) + (if (not *target*) + (go quicksandlurker-wait) + ) + (let ((a0-0 (-> self nav)) + (a1-0 (-> *target* control trans)) + ) + (cond + ((or + (if (dummy-16 a0-0 a1-0) + #t + ) + (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + ) + (else + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600) + (go quicksandlurker-popup) + ) + ) ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) ) - (else - (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600) - (go quicksandlurker-popup) - ) - ) - ) + (none) ) - (none) - ) :code (behavior () - (ja-channel-push! 1 60) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (ja-channel-push! 1 60) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 0.75) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 0.75) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 0.75) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 (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* 201) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) + ) + (clear-collide-with-as (-> self root-override)) + (while #t + (orient-to-face-target) + (suspend) + ) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 0.75) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-5 (method-of-type part-tracker activate))) - (t9-5 - (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* 201) - -1 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-0 ppointer) - ) - ) - (clear-collide-with-as (-> self root-override)) - (while #t - (orient-to-face-target) - (suspend) - ) - (none) - ) :post quicksandlurker-post ) @@ -1501,76 +1077,45 @@ quicksandlurker-check-hide-transition :code (behavior () - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-1 (method-of-type part-tracker activate))) - (t9-1 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 202) - -1 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-0 ppointer) - ) - ) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 202) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) ) - -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 8)) - 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 8))) + (set! (-> a0-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) 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 8)) num-func-seek!) + ) + (until (ja-done? 0) + (orient-to-face-target) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (go quicksandlurker-track) + (none) ) - (until (ja-done? 0) - (orient-to-face-target) - (suspend) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group-eval! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go quicksandlurker-track) - (none) - ) :post quicksandlurker-post ) @@ -1578,145 +1123,90 @@ (defstate quicksandlurker-die (quicksandlurker) :event (the-as - (function process int symbol event-message-block object :behavior quicksandlurker) - process-drawable-death-event-handler - ) + (function process int symbol event-message-block object :behavior quicksandlurker) + process-drawable-death-event-handler + ) :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 60) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 9)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 9)) - data - 0 - length + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 60) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 9))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) 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 9)) 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!) ) - -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 9)) - num-func-seek! - ) + (dummy-18 self) + (none) ) - (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! - ) - ) - ) - (dummy-18 self) - (none) - ) :post quicksandlurker-post ) -(defmethod - init-from-entity! - quicksandlurker - ((obj quicksandlurker) (arg0 entity-actor)) +(defmethod init-from-entity! quicksandlurker ((obj quicksandlurker) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) - ) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 transform-index) 3) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 1)) + (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 transform-index) 5) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 transform-index) 5) + (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) + (append-prim s3-0 s2-2) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) - (set! (-> s2-0 transform-index) 3) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) - (set! (-> s2-1 transform-index) 5) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core offense) 2) - (set! (-> s2-2 transform-index) 5) - (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s3-0 s2-2) - ) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) - (set! - (-> obj root-override trans y) - (+ -2048.0 (-> obj root-override trans y)) - ) + (set! (-> obj root-override trans y) (+ -2048.0 (-> obj root-override trans y))) (set! (-> obj original-position quad) (-> obj root-override trans quad)) (set! (-> obj theta-angle) (rand-vu-float-range 0.0 65536.0)) (set! (-> obj bob-angle) (rand-vu-float-range 0.0 65536.0)) (set! (-> obj radial-offset) 4096.0) (set! (-> obj y-offset) -6553.6) - (set-yaw-angle-clear-roll-pitch! - (-> obj root-override) - (rand-vu-float-range 0.0 65536.0) - ) + (set-yaw-angle-clear-roll-pitch! (-> obj root-override) (rand-vu-float-range 0.0 65536.0)) (initialize-skeleton obj *quicksandlurker-sg* '()) - (set! - (-> obj nav) - (new 'process 'nav-control (-> obj root-override) 16 40960.0) - ) - (logior! - (-> obj nav flags) - (nav-control-flags display-marks bit3 bit5 bit6 bit7) - ) - (set! - (-> obj fact) - (new - 'process - 'fact-info-enemy - obj - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) - (set! - (-> obj mud-entity) - (entity-actor-lookup (-> obj entity) 'water-actor 0) - ) + (set! (-> obj nav) (new 'process 'nav-control (-> obj root-override) 16 40960.0)) + (logior! (-> obj nav flags) (nav-control-flags display-marks bit3 bit5 bit6 bit7)) + (set! (-> obj fact) + (new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) + (set! (-> obj mud-entity) (entity-actor-lookup (-> obj entity) 'water-actor 0)) (go quicksandlurker-idle) (none) ) diff --git a/goal_src/levels/ogre/flying-lurker.gc b/goal_src/levels/ogre/flying-lurker.gc index b8168692f6..809446add0 100644 --- a/goal_src/levels/ogre/flying-lurker.gc +++ b/goal_src/levels/ogre/flying-lurker.gc @@ -75,9 +75,9 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) 32))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) (set! (-> self draw status) v0-0) - v0-0 + (the-as uint v0-0) ) ) ) @@ -105,32 +105,32 @@ :index 7 :parts 4 :command-list - '(((the binteger 200) alive "tntbarrel-223") - ((the binteger 200) alive "tntbarrel-222") - ((the binteger 200) alive "tntbarrel-221") - ((the binteger 200) alive "tntbarrel-220") - ((the binteger 200) alive "tntbarrel-224") - ((the binteger 200) alive "tntbarrel-219") - ((the binteger 200) alive "tntbarrel-246") - ((the binteger 200) alive "tntbarrel-249") - ((the binteger 200) alive "tntbarrel-250") - ((the binteger 200) alive "tntbarrel-251") - ((the binteger 200) alive "tntbarrel-225") - ((the binteger 201) joint "cameraB") - ((the binteger 220) send-event "tntbarrel-223" 'die-big) - ((the binteger 230) send-event "tntbarrel-222" 'die-big) - ((the binteger 240) send-event "tntbarrel-221" 'die-big) - ((the binteger 240) send-event "tntbarrel-220" 'die-big) - ((the binteger 245) send-event "tntbarrel-224" 'die-big) - ((the binteger 250) send-event "tntbarrel-219" 'die-big) - ((the binteger 251) joint "cameraA") - ((the binteger 260) send-event "tntbarrel-246" 'die-big) - ((the binteger 325) send-event "tntbarrel-249" 'die-big) - ((the binteger 380) send-event "tntbarrel-250" 'die-big) - ((the binteger 410) send-event "tntbarrel-251" 'die-big) - ((the binteger 420) blackout (the binteger 30)) - ((the binteger 421) joint "cameraB") - ((the binteger 430) send-event "tntbarrel-225" 'die-big) + '((200 alive "tntbarrel-223") + (200 alive "tntbarrel-222") + (200 alive "tntbarrel-221") + (200 alive "tntbarrel-220") + (200 alive "tntbarrel-224") + (200 alive "tntbarrel-219") + (200 alive "tntbarrel-246") + (200 alive "tntbarrel-249") + (200 alive "tntbarrel-250") + (200 alive "tntbarrel-251") + (200 alive "tntbarrel-225") + (201 joint "cameraB") + (220 send-event "tntbarrel-223" 'die-big) + (230 send-event "tntbarrel-222" 'die-big) + (240 send-event "tntbarrel-221" 'die-big) + (240 send-event "tntbarrel-220" 'die-big) + (245 send-event "tntbarrel-224" 'die-big) + (250 send-event "tntbarrel-219" 'die-big) + (251 joint "cameraA") + (260 send-event "tntbarrel-246" 'die-big) + (325 send-event "tntbarrel-249" 'die-big) + (380 send-event "tntbarrel-250" 'die-big) + (410 send-event "tntbarrel-251" 'die-big) + (420 blackout 30) + (421 joint "cameraB") + (430 send-event "tntbarrel-225" 'die-big) ) ) (the-as art-joint-anim #f) @@ -420,7 +420,7 @@ ) (when (-> obj draw shadow) (when (or - (logtest? (-> obj draw status) 8) + (logtest? (-> obj draw status) (draw-status drwf03)) (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) ) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) @@ -512,7 +512,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) @@ -754,7 +754,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status bit-3) #t) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -984,9 +984,9 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) 32))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) (set! (-> self draw status) v0-0) - v0-0 + (the-as uint v0-0) ) ) ) @@ -1257,7 +1257,7 @@ ) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) diff --git a/goal_src/levels/ogre/ogre-obs.gc b/goal_src/levels/ogre/ogre-obs.gc index 8ceb8e44fe..6ff2504de9 100644 --- a/goal_src/levels/ogre/ogre-obs.gc +++ b/goal_src/levels/ogre/ogre-obs.gc @@ -41,410 +41,362 @@ :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-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* 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* 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* 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* 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* 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* 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* 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* 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-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-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* 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* 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* 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* 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* 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* 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* 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) - ) - ) - ) +(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 @@ -472,143 +424,105 @@ :virtual #t :code (behavior ((arg0 symbol)) - (ja-channel-set! 0) - (clear-collide-with-as (-> 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) - ) + (ja-channel-set! 0) + (clear-collide-with-as (-> 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) + ) + ) ) - (run-now-in-process - gp-1 - part-tracker-init - (-> *part-group-id-table* 473) - -1 - #f - #f - #f - (-> self root-override trans) + (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) + ) + ) ) - (-> 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) ) - (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)) + (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) ) - (send-event-function arg0 a1-7) ) - (go-virtual die #f) - ) ) - ) :code - (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - (none) - ) + (behavior () (transform-post) (logior! (-> self mask) (process-mask sleep)) (suspend) 0 (none)) ) (defmethod init-from-entity! tntbarrel ((obj tntbarrel) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (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) + (set-root-prim! s4-0 s3-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) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *tntbarrel-sg* '()) (set-vector! (-> obj draw color-mult) 1.3 1.3 1.3 1.0) @@ -688,13 +602,7 @@ (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) - ) + ((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) @@ -704,70 +612,51 @@ :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 - ) - ) - ) + (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) + (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) ) - ) ) - (if (-> self triggered) - (sound-play-by-name - (static-sound-name "rock-in-lava") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (else + (if (and + (-> self triggered) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self delay))) + ) + (set! (-> self active) #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) ) - (none) - ) :code (behavior () - (logior! (-> self draw status) 2) - (while #t - (suspend) + (logior! (-> self draw status) (draw-status drwf01)) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior ogre-plat) ja-post) ) @@ -776,105 +665,66 @@ :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior ogre-plat) - rigid-body-platform-event-handler - ) + (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) + (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))) + ) ) - ) ) - (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) ) - (none) - ) :code (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (while #t - (suspend) + (logclear! (-> self draw status) (draw-status drwf01)) + (while #t + (suspend) + ) + (none) ) - (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) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (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) + (set-root-prim! s5-0 s4-0) ) - ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) @@ -882,19 +732,19 @@ (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))) + (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! (-> 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) @@ -902,33 +752,31 @@ (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" - ) - ) +(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) () @@ -946,23 +794,19 @@ (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) + (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)) - ) + (go (method-of-object obj rigid-body-platform-float)) + (go (method-of-object obj rigid-body-platform-idle)) + ) 0 (none) ) @@ -1004,13 +848,7 @@ (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 - ) + (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 @@ -1018,13 +856,7 @@ ) (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 - ) + (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 @@ -1032,13 +864,7 @@ ) (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 - ) + (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 @@ -1046,47 +872,39 @@ ) (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 - ) + (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 - ) - ) +(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) () @@ -1136,13 +954,7 @@ (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 - ) + (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 @@ -1151,13 +963,7 @@ (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 - ) + (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 @@ -1167,13 +973,7 @@ (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 - ) + (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 @@ -1202,143 +1002,102 @@ (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) + (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 + 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)) - ) + (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) - ) + (behavior () (ogre-bridge-update-joints) (none)) :trans (behavior () - (if - (and - (and - *target* - (>= - 286720.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) + (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) ) - ) - ) - (send-event *target* 'query 'powerup 3) - ) - (go ogre-bridge-activate) + 0 + (none) ) - 0 - (none) - ) :code (behavior () - (ja-post) - (while #t - (suspend) + (ja-post) + (while #t + (suspend) + ) + (none) ) - (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 + (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 - 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! - ) + (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) ) - (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) ) @@ -1346,50 +1105,38 @@ (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 + (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 ) ) - ) ) - (transform-post) - (while #t - (suspend) + :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) ) - (none) - ) :post (the-as (function none :behavior ogre-bridge) ja-post) ) @@ -1397,108 +1144,53 @@ (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) - ) - ) - ) - ) + (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 + (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!) ) - -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! - ) + (go ogre-bridge-idle) + (none) ) - (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) ) @@ -1506,416 +1198,205 @@ (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 + (new 'static 'boxed-array :type uint8 :length 8 :allocated-length 8 #x4 #x9 #xc #x11 #x7 #xa #xf #x12) ) - ) ) (defmethod init-from-entity! ogre-bridge ((obj ogre-bridge) (arg0 entity-actor)) (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) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 3)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-1 collide-with) (the-as uint 16)) + (set! (-> s2-1 prim-core action) (the-as uint 3)) + (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 transform-index) 5) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 6) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-2) + ) + (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-3 collide-with) (the-as uint 16)) + (set! (-> s2-3 prim-core action) (the-as uint 3)) + (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 transform-index) 7) + (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-3) + ) + (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-4 collide-with) (the-as uint 16)) + (set! (-> s2-4 prim-core action) (the-as uint 3)) + (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 transform-index) 8) + (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-4) + ) + (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-5 collide-with) (the-as uint 16)) + (set! (-> s2-5 prim-core action) (the-as uint 3)) + (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 transform-index) 9) + (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-5) + ) + (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-6 collide-with) (the-as uint 16)) + (set! (-> s2-6 prim-core action) (the-as uint 3)) + (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 transform-index) 10) + (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-6) + ) + (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-7 collide-with) (the-as uint 16)) + (set! (-> s2-7 prim-core action) (the-as uint 3)) + (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 transform-index) 11) + (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-7) + ) + (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-8 collide-with) (the-as uint 16)) + (set! (-> s2-8 prim-core action) (the-as uint 3)) + (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 transform-index) 12) + (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-8) + ) + (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-9 collide-with) (the-as uint 16)) + (set! (-> s2-9 prim-core action) (the-as uint 3)) + (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 transform-index) 13) + (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-9) + ) + (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-10 collide-with) (the-as uint 16)) + (set! (-> s2-10 prim-core action) (the-as uint 3)) + (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 transform-index) 14) + (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-10) + ) + (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-11 collide-with) (the-as uint 16)) + (set! (-> s2-11 prim-core action) (the-as uint 3)) + (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 transform-index) 15) + (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-11) + ) + (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-12 collide-with) (the-as uint 16)) + (set! (-> s2-12 prim-core action) (the-as uint 3)) + (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 transform-index) 16) + (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-12) + ) + (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-13 collide-with) (the-as uint 16)) + (set! (-> s2-13 prim-core action) (the-as uint 3)) + (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 transform-index) 17) + (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-13) + ) + (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-14 collide-with) (the-as uint 16)) + (set! (-> s2-14 prim-core action) (the-as uint 3)) + (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 transform-index) 18) + (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-14) + ) + (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) + (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-15 collide-with) (the-as uint 16)) + (set! (-> s2-15 prim-core action) (the-as uint 3)) + (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 transform-index) 19) + (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-15) + ) + (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 1)))) + (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-16 collide-with) (the-as uint 16)) + (set! (-> s2-16 prim-core action) (the-as uint 3)) + (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 transform-index) 20) + (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) + (append-prim s3-0 s2-16) + ) ) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (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) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) 4) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) 5) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-1) - ) - (let - ((s2-2 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) - (set! (-> s2-2 transform-index) 6) - (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-2) - ) - (let - ((s2-3 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) - (set! (-> s2-3 transform-index) 7) - (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-3) - ) - (let - ((s2-4 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) - (set! (-> s2-4 transform-index) 8) - (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-4) - ) - (let - ((s2-5 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) - (set! (-> s2-5 transform-index) 9) - (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-5) - ) - (let - ((s2-6 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) - (set! (-> s2-6 transform-index) 10) - (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-6) - ) - (let - ((s2-7 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) - (set! (-> s2-7 transform-index) 11) - (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-7) - ) - (let - ((s2-8 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) - (set! (-> s2-8 transform-index) 12) - (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-8) - ) - (let - ((s2-9 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) - (set! (-> s2-9 transform-index) 13) - (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-9) - ) - (let - ((s2-10 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) - (set! (-> s2-10 transform-index) 14) - (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-10) - ) - (let - ((s2-11 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) - (set! (-> s2-11 transform-index) 15) - (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-11) - ) - (let - ((s2-12 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) - (set! (-> s2-12 transform-index) 16) - (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-12) - ) - (let - ((s2-13 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) - (set! (-> s2-13 transform-index) 17) - (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-13) - ) - (let - ((s2-14 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) - (set! (-> s2-14 transform-index) 18) - (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-14) - ) - (let - ((s2-15 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) - (set! (-> s2-15 transform-index) 19) - (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-15) - ) - (let - ((s2-16 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 2) - (the-as uint 1) - ) - ) - ) - (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-16 collide-with) (the-as uint 16)) - (set! (-> s2-16 prim-core action) (the-as uint 3)) - (set! (-> s2-16 prim-core offense) 4) - (set! (-> s2-16 transform-index) 20) - (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) - (append-prim s3-0 s2-16) - ) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (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 - ) + (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)) ) - ) - (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)) + ((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) ) - (set! (-> obj dead-joint-count) 8) - (ogre-bridge-update-joints) - (go ogre-bridge-activated) + (else + (go ogre-bridge-idle) + ) ) - (else - (go ogre-bridge-idle) - ) - ) (none) ) @@ -1939,45 +1420,24 @@ (defstate ogre-bridgeend-idle (ogre-bridgeend) :code - (behavior () - (transform-post) - (anim-loop) - (none) - ) + (behavior () (transform-post) (anim-loop) (none)) ) -(defmethod - init-from-entity! - ogre-bridgeend - ((obj ogre-bridgeend) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)) - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) +(defmethod init-from-entity! ogre-bridgeend ((obj ogre-bridgeend) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *ogre-bridgeend-sg* '()) (go ogre-bridgeend-idle) @@ -1999,105 +1459,80 @@ :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) + (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) + ) ) - (('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 + (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 ) - -1 - ) + (set! (-> gp-0 frame-num) 0.0) ) - ) - (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)) + (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! + ) ) - (set! (-> a0-3 param 1) 0.5) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - 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) ) - (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) ) @@ -2106,43 +1541,41 @@ :virtual #t :code (behavior () - (set! (-> self idle-anim) 2) - (set! (-> self anim) (-> self idle-anim)) - (go-virtual water-vol-idle) - (none) - ) + (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) - ) - ) - ) +(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) - ) + (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 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) - ) + (set! (-> obj attack-event) v0-2) + (the-as ripple-wave-set v0-2) + ) ) (deftype shortcut-boulder (process-drawable) @@ -2172,194 +1605,164 @@ :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-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* 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* 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* 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) - ) - ) - ) +(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) - ) + (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) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 475) - -1 - #f - #f - #f - (-> self root-override trans) + (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! + ) ) - (-> gp-0 ppointer) - ) + (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) ) - (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) ) @@ -2367,62 +1770,43 @@ (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) + (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) + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + (none) ) - (none) - ) ) -(defmethod - init-from-entity! - shortcut-boulder - ((obj shortcut-boulder) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) +(defmethod init-from-entity! shortcut-boulder ((obj shortcut-boulder) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (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) - ) + (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/snow/snow-flutflut-obs.gc b/goal_src/levels/snow/snow-flutflut-obs.gc index ad5076e8f8..093e581693 100644 --- a/goal_src/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/levels/snow/snow-flutflut-obs.gc @@ -94,365 +94,303 @@ :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-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* 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-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-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* 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-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-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* 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) - ) - ) - ) +(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) - ) + (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) ) - ) - (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 ) ) - (('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) + (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) ) - (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 + (local-vars (v0-0 object)) + (case arg2 + (('untrigger) + (go snow-button-deactivate) + ) + (('query) + (return #t) + v0-0 ) ) - ) - (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) + :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) - (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! - ) - ) + 0 + (none) ) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - (none) - ) :post (the-as (function none :behavior snow-button) rider-post) ) @@ -460,177 +398,117 @@ (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 + (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) - ) + (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 + (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!) ) - -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! - ) + (go snow-button-up-idle) + (none) ) - (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 init-from-entity! snow-button ((obj snow-button) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let ((s3-0 (new 'process 'collide-shape-prim-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) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) - (set! (-> s2-0 transform-index) 4) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) + (append-prim s3-0 s2-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) 0.0 2048.0 0.0 11468.8) - (append-prim s3-0 s2-1) - ) - (let - ((s2-2 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 2) + (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) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) + (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) + (set! (-> s2-2 collide-with) (the-as uint 16)) + (set! (-> s2-2 prim-core action) (the-as uint 3)) + (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) + (append-prim s3-0 s2-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) - (append-prim s3-0 s2-2) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (set! (-> obj 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 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) - ) + (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 + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) ) - (set! (-> s5-1 frame-num) 0.0) - ) (transform-post) (go snow-button-up-idle) (none) @@ -638,81 +516,60 @@ (defmethod dummy-26 flutflut-plat ((obj flutflut-plat)) (let ((t9-0 (method-of-type plat dummy-26))) - (t9-0 obj) - ) + (t9-0 obj) + ) (if (zero? (-> obj link)) - (set! (-> obj link) (new 'process 'actor-link-info obj)) - ) + (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) - ) + (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 - ) + (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) - ) - ) + (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) (fact-options fop3)) - (get-current-phase (-> obj sync)) - (get-current-phase-with-mirror (-> obj sync)) + (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) (fact-options fop3)) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) + 'interp + ) ) - 'interp + (else + (set! (-> obj appear-trans-top quad) (-> obj root-override trans quad)) + ) ) - ) - (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) ) - (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)) - ) + (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)) - ) + (process-entity-status! obj (entity-perm-status complete) #t) + (return (the-as skeleton-group #t)) + ) (the-as skeleton-group #f) ) @@ -720,206 +577,156 @@ :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) - ) - ) + (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) ) - ) - (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) + (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) ) - ) - (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) - ) + ((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) ) - ) - (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)) + ) + ) + ) ) - ) - (else - (let ((t9-4 (-> (method-of-type plat plat-startup) code))) - (if t9-4 - ((the-as (function none :behavior plat) t9-4)) - ) - ) - ) + (none) ) - (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) + (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) + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) + (go flutflut-plat-appear) + ) + (none) ) - (none) - ) :code (behavior () - (logior! (-> self draw status) 2) - (clear-collide-with-as (-> 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) - ) + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> 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) - ) - ) + (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))) - (restore-collide-with-as (-> 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 - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self draw status) (draw-status drwf01)) + (restore-collide-with-as (-> 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) ) - (none) - ) :exit - (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (none) - ) + (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) + (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) + ) ) - ) - (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) ) - (dummy-20 self) - (none) - ) :code (the-as (function none :behavior flutflut-plat) anim-loop) :post @@ -930,193 +737,155 @@ :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) - ) - ) - ) + (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) - ) + (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) + (if t9-0 + (t9-0) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) ) - (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) - ) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) ) - (none) - ) :trans (behavior () - (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) - (if t9-0 - (t9-0) - ) + (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) ) - (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) - ) - ) - ) + (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) - ) - ) + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) + (if t9-0 + (t9-0 arg0) + ) ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) + (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) ) - (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) - ) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) exit))) + (if t9-0 + (t9-0) + ) + ) + (none) ) - (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) - ) - ) + (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 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) ) - (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) - ) + (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)) + (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) ) - ) ) - (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) ) - (dummy-20 self) - (none) - ) :code (the-as (function none :behavior flutflut-plat) anim-loop) :post @@ -1126,55 +895,35 @@ (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) - ) - ) - ) - ) + (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) - ) + (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) - ) + (behavior () (plat-trans) (dummy-20 self) (none)) :code (the-as (function none :behavior flutflut-plat) anim-loop) :post @@ -1184,37 +933,25 @@ (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) - ) - ) + (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) + (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) ) - (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 @@ -1224,39 +961,37 @@ (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) - ) - ) + (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) - ) + (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)) - ) - ) + (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) + ) ) - (go elevator-travel-to-cave) - ) + (plat-trans) + (dummy-20 self) + (none) ) - (plat-trans) - (dummy-20 self) - (none) - ) :code (the-as (function none :behavior flutflut-plat) anim-loop) :post @@ -1266,37 +1001,25 @@ (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) - ) - ) + (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) + (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) ) - (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 @@ -1336,76 +1059,49 @@ (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) - ) + (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* 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)) ) - (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))) - ) + (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1416,50 +1112,32 @@ (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) - ) + (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1470,76 +1148,49 @@ (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) - ) + (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* 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)) ) - (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))) - ) + (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) diff --git a/goal_src/levels/sunken/qbert-plat.gc b/goal_src/levels/sunken/qbert-plat.gc index 900b64aa7e..07d6e89e8d 100644 --- a/goal_src/levels/sunken/qbert-plat.gc +++ b/goal_src/levels/sunken/qbert-plat.gc @@ -55,33 +55,31 @@ :longest-edge (meters 0) ) -(define - *qbert-plat-constants* - (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1.0) - :gravity-factor 1.0 - :gravity (meters 80.0) - :player-weight (meters 35.0) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000.0) - :player-force-clamp (meters 1000000.0) - :player-force-timeout #x1e - :explosion-force (meters 1000.0) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 4 - :mass 4.0 - :inertial-tensor-x (meters 4.0) - :inertial-tensor-y (meters 4.0) - :inertial-tensor-z (meters 4.0) - :idle-distance (meters 70.0) - :platform #t - :sound-name #f - ) - ) +(define *qbert-plat-constants* (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 1000.0) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 4.0) + :inertial-tensor-y (meters 4.0) + :inertial-tensor-z (meters 4.0) + :idle-distance (meters 70.0) + :platform #t + :sound-name #f + ) + ) (deftype qbert-plat-master (process-drawable) ((last-plat-triggered int32 :offset-assert 176) @@ -108,56 +106,45 @@ (defstate qbert-plat-on-mimic (qbert-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('die) - (go qbert-plat-on-die) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('die) + (go qbert-plat-on-die) + ) + ) + ) :code (behavior () - (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) - (while #t - (let ((gp-0 (-> self parent))) - (set! - (-> self root-overlay trans quad) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay trans quad) + (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) + (while #t + (let ((gp-0 (-> self parent))) + (set! (-> self root-overlay trans quad) + (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay trans quad) + ) + (quaternion-copy! + (-> self root-overlay quat) + (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay quat) + ) + (set! (-> self root-overlay scale quad) + (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay scale quad) + ) + ) + (suspend) ) - (quaternion-copy! - (-> self root-overlay quat) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay quat) - ) - (set! - (-> self root-overlay scale quad) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay scale quad) - ) - ) - (suspend) + (none) ) - (none) - ) :post (the-as (function none :behavior qbert-plat) ja-post) ) (defstate qbert-plat-on-die (qbert-plat) :code - (behavior () - '() - (none) - ) + (behavior () '() (none)) ) -(defbehavior - qbert-plat-on-init-by-other qbert-plat - ((arg0 entity) (arg1 qbert-plat)) +(defbehavior qbert-plat-on-init-by-other qbert-plat ((arg0 entity) (arg1 qbert-plat)) (set! (-> self entity) arg0) (set! (-> self mask) (logior (process-mask platform) (-> self mask))) - (set! - (-> self root-overlay) - (the-as collide-shape-moving (new 'process 'trsqv)) - ) + (set! (-> self root-overlay) (the-as collide-shape-moving (new 'process 'trsqv))) (set! (-> self root-overlay trans quad) (-> arg1 root-overlay trans quad)) (quaternion-copy! (-> self root-overlay quat) (-> arg1 root-overlay quat)) (set! (-> self root-overlay scale quad) (-> arg1 root-overlay scale quad)) @@ -165,134 +152,99 @@ (logior! (-> self skel status) 1) (ja-channel-set! 1) (let ((gp-1 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-identity + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! (-> gp-1 frame-num) 0.0) ) - (set! (-> gp-1 frame-num) 0.0) - ) (go qbert-plat-on-mimic) (none) ) -(defbehavior - qbert-plat-event-handler qbert-plat - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('notify) +(defbehavior qbert-plat-event-handler qbert-plat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('notify) (dummy-32 self) ) - (else - (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) + (else + (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) + ) ) - ) ) (defmethod dummy-33 qbert-plat ((obj qbert-plat)) (let* ((a1-0 (-> obj master)) (v1-0 (if a1-0 - (-> a1-0 extra process) - ) - ) + (-> a1-0 extra process) + ) + ) ) - (if v1-0 - (send-event v1-0 'trigger (-> obj plat-id)) + (if v1-0 + (send-event v1-0 'trigger (-> obj plat-id)) + ) ) - ) ) (defmethod dummy-32 qbert-plat ((obj qbert-plat)) (let* ((v1-0 (-> obj master)) (a0-1 (if v1-0 - (-> v1-0 extra process) + (-> v1-0 extra process) + ) + ) + ) + (when (the-as qbert-plat-master a0-1) + (let ((v1-3 (plat-state-set? (the-as qbert-plat-master a0-1) (the-as uint (-> obj plat-id))))) + (when (!= v1-3 (-> obj on?)) + (set! (-> obj on?) v1-3) + (cond + (v1-3 + (let ((s5-0 (get-process *default-dead-pool* qbert-plat-on #x4000))) + (when s5-0 + (let ((t9-2 (method-of-type qbert-plat-on activate))) + (t9-2 (the-as qbert-plat-on s5-0) obj 'qbert-plat-on (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 qbert-plat-on-init-by-other (-> obj entity) obj) + (-> s5-0 ppointer) + ) ) - ) - ) - (when (the-as qbert-plat-master a0-1) - (let - ((v1-3 - (plat-state-set? - (the-as qbert-plat-master a0-1) - (the-as uint (-> obj plat-id)) - ) - ) - ) - (when (!= v1-3 (-> obj on?)) - (set! (-> obj on?) v1-3) - (cond - (v1-3 - (let ((s5-0 (get-process *default-dead-pool* qbert-plat-on #x4000))) - (when s5-0 - (let ((t9-2 (method-of-type qbert-plat-on activate))) - (t9-2 - (the-as qbert-plat-on s5-0) - obj - 'qbert-plat-on - (the-as pointer #x70004000) + (sound-play-by-name (static-sound-name "plat-light-on") (new-sound-id) 1024 0 0 1 #t) + ) + (else + (let ((gp-2 (-> obj child))) + (while gp-2 + (send-event (ppointer->process gp-2) 'die) + (set! gp-2 (-> gp-2 0 brother)) + ) + ) + (sound-play-by-name (static-sound-name "plat-light-off") (new-sound-id) 1024 0 0 1 #t) + ) ) - ) - (run-now-in-process - s5-0 - qbert-plat-on-init-by-other - (-> obj entity) - obj - ) - (-> s5-0 ppointer) ) - ) - (sound-play-by-name - (static-sound-name "plat-light-on") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) ) - (else - (let ((gp-2 (-> obj child))) - (while gp-2 - (send-event (ppointer->process gp-2) 'die) - (set! gp-2 (-> gp-2 0 brother)) - ) - ) - (sound-play-by-name - (static-sound-name "plat-light-off") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - ) ) - ) ) - ) ) (defstate qbert-plat-wait-for-master (qbert-plat) :code (behavior () - (while #t - (let ((v1-0 (-> self master))) - (when (if v1-0 - (-> v1-0 extra process) - ) + (while #t + (let ((v1-0 (-> self master))) + (when (if v1-0 + (-> v1-0 extra process) + ) + (suspend) + (dummy-32 self) + (go-virtual rigid-body-platform-idle) + ) + ) (suspend) - (dummy-32 self) - (go-virtual rigid-body-platform-idle) + 0 ) - ) - (suspend) - 0 + (none) ) - (none) - ) :post (the-as (function none :behavior qbert-plat) ja-post) ) @@ -303,11 +255,11 @@ qbert-plat-event-handler :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior qbert-plat) ja-post) ) @@ -318,109 +270,76 @@ qbert-plat-event-handler :exit (behavior () - (if (-> self on?) - (logior! (-> self draw status) 2) + (if (-> self on?) + (logior! (-> self draw status) (draw-status drwf01)) + ) + (none) ) - (none) - ) :trans (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) - (let* ((v1-5 (-> self root-overlay riders)) - (gp-1 (nonzero? (-> v1-5 num-riders))) - ) - (when gp-1 - (if (not (-> self player-is-riding?)) - (dummy-33 self) + (logclear! (-> self draw status) (draw-status drwf01)) + ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) + (let* ((v1-5 (-> self root-overlay riders)) + (gp-1 (nonzero? (-> v1-5 num-riders))) + ) + (when gp-1 + (if (not (-> self player-is-riding?)) + (dummy-33 self) + ) + ) + (set! (-> self player-is-riding?) gp-1) ) - ) - (set! (-> self player-is-riding?) gp-1) + (none) ) - (none) - ) :post (behavior () - ((the-as - (function none :behavior qbert-plat) - (-> (method-of-type rigid-body-platform rigid-body-platform-float) post) + ((the-as + (function none :behavior qbert-plat) + (-> (method-of-type rigid-body-platform rigid-body-platform-float) post) + ) ) + (if (-> self on?) + (logior! (-> self draw status) (draw-status drwf01)) + ) + (none) ) - (if (-> self on?) - (logior! (-> self draw status) 2) - ) - (none) - ) ) -(defmethod - TODO-RENAME-22 - qbert-plat - ((obj qbert-plat) (arg0 vector) (arg1 float)) - (+ - (-> obj anchor-point y) - (-> obj float-height-offset) - (* - 512.0 - (cos - (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))) +(defmethod TODO-RENAME-22 qbert-plat ((obj qbert-plat) (arg0 vector) (arg1 float)) + (+ (-> obj anchor-point y) + (-> obj float-height-offset) + (* 512.0 (cos (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) ) - ) - ) ) (defmethod TODO-RENAME-23 qbert-plat ((obj qbert-plat) (arg0 float)) - ((the-as - (function rigid-body-platform float none) - (find-parent-method qbert-plat 23) - ) - obj - arg0 - ) + ((the-as (function rigid-body-platform float none) (find-parent-method qbert-plat 23)) obj arg0) (TODO-RENAME-27 obj (-> obj anchor-point)) 0 (none) ) (defmethod TODO-RENAME-30 qbert-plat ((obj qbert-plat)) - (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) @@ -433,29 +352,29 @@ (TODO-RENAME-29 obj *qbert-plat-constants*) (set! (-> obj float-height-offset) 6144.0) (let ((v1-11 (-> obj control-point-array data))) - (set! (-> v1-11 0 local-pos x) -14336.0) - (set! (-> v1-11 0 local-pos y) 0.0) - (set! (-> v1-11 0 local-pos z) -14336.0) - (set! (-> v1-11 0 local-pos w) 1.0) - ) + (set! (-> v1-11 0 local-pos x) -14336.0) + (set! (-> v1-11 0 local-pos y) 0.0) + (set! (-> v1-11 0 local-pos z) -14336.0) + (set! (-> v1-11 0 local-pos w) 1.0) + ) (let ((v1-13 (-> obj control-point-array data 1))) - (set! (-> v1-13 local-pos x) -14336.0) - (set! (-> v1-13 local-pos y) 0.0) - (set! (-> v1-13 local-pos z) 14336.0) - (set! (-> v1-13 local-pos w) 1.0) - ) + (set! (-> v1-13 local-pos x) -14336.0) + (set! (-> v1-13 local-pos y) 0.0) + (set! (-> v1-13 local-pos z) 14336.0) + (set! (-> v1-13 local-pos w) 1.0) + ) (let ((v1-15 (-> obj control-point-array data 2))) - (set! (-> v1-15 local-pos x) 14336.0) - (set! (-> v1-15 local-pos y) 0.0) - (set! (-> v1-15 local-pos z) 14336.0) - (set! (-> v1-15 local-pos w) 1.0) - ) + (set! (-> v1-15 local-pos x) 14336.0) + (set! (-> v1-15 local-pos y) 0.0) + (set! (-> v1-15 local-pos z) 14336.0) + (set! (-> v1-15 local-pos w) 1.0) + ) (let ((v1-17 (-> obj control-point-array data 3))) - (set! (-> v1-17 local-pos x) 14336.0) - (set! (-> v1-17 local-pos y) 0.0) - (set! (-> v1-17 local-pos z) -14336.0) - (set! (-> v1-17 local-pos w) 1.0) - ) + (set! (-> v1-17 local-pos x) 14336.0) + (set! (-> v1-17 local-pos y) 0.0) + (set! (-> v1-17 local-pos z) -14336.0) + (set! (-> v1-17 local-pos w) 1.0) + ) (set! (-> obj on?) #f) (set! (-> obj player-is-riding?) #f) (set! (-> obj master) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) @@ -474,418 +393,400 @@ (none) ) -(defmethod - plat-state-set? - qbert-plat-master - ((obj qbert-plat-master) (arg0 uint)) +(defmethod plat-state-set? qbert-plat-master ((obj qbert-plat-master) (arg0 uint)) (logtest? (-> obj plat-states) (ash 1 arg0)) ) (defstate qbert-plat-master-idle (qbert-plat-master) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (start-hint-timer (game-text-id sunken-qbert-plat-hint)) - (close-specific-task! - (game-task sunken-platforms) - (task-status need-hint) - ) - (when (not (-> self puzzle-beaten?)) - (let ((v1-2 (-> arg3 param 0))) - (when (!= v1-2 (-> self last-plat-triggered)) - (set! (-> self last-plat-triggered) (the-as int v1-2)) - (let - ((s5-1 - (= (-> self plat-states-needed-to-open-door) (-> self plat-states)) - ) - ) - (let ((v1-3 (ash 1 v1-2))) - (set! - (-> self plat-states) - (logxor (-> self plat-states) (the-as uint v1-3)) - ) - (if (zero? (logand v1-3 (-> self plat-states))) - (level-hint-spawn - (game-text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) + (case arg2 + (('trigger) + (start-hint-timer (game-text-id sunken-qbert-plat-hint)) + (close-specific-task! (game-task sunken-platforms) (task-status need-hint)) + (when (not (-> self puzzle-beaten?)) + (let ((v1-2 (-> arg3 param 0))) + (when (!= v1-2 (-> self last-plat-triggered)) + (set! (-> self last-plat-triggered) (the-as int v1-2)) + (let ((s5-1 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) + (let ((v1-3 (ash 1 v1-2))) + (set! (-> self plat-states) (logxor (-> self plat-states) (the-as uint v1-3))) + (if (zero? (logand v1-3 (-> self plat-states))) + (level-hint-spawn + (game-text-id sunken-qbert-plat-hint) + "sksp0130" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (send-event arg0 'notify) + (let ((a0-13 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) + (if (!= s5-1 a0-13) + (go qbert-plat-master-do-door a0-13) + ) + ) + ) ) - ) ) - (send-event arg0 'notify) - (let - ((a0-13 - (= (-> self plat-states-needed-to-open-door) (-> self plat-states)) - ) - ) - (if (!= s5-1 a0-13) - (go qbert-plat-master-do-door a0-13) - ) - ) - ) ) - ) ) ) ) - ) :code (behavior () - (while #t - (when (not (-> self puzzle-beaten?)) - (when (task-complete? *game-info* (game-task sunken-platforms)) - (set! (-> self puzzle-beaten?) #t) - (set! (-> self plat-states) (-> self plat-states-needed-to-open-door)) - (set! (-> self play-door-cam?) #f) - (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) 'trigger) - (let ((t9-1 send-event-function) - (v1-8 (-> self door)) - ) - (t9-1 (if v1-8 - (-> v1-8 extra process) - ) - a1-1 - ) - ) - ) - (let ((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-12 (-> self door-plat)) - ) - (t9-2 (if v1-12 - (-> v1-12 extra process) - ) - a1-2 - ) - ) - ) - (send-to-all (-> self link) 'notify) - ) - ) - (when (and *target* (not (-> self puzzle-beaten?))) - (let ((gp-0 #f)) - (let ((s5-1 (logtest? (-> *target* water flags) 512))) - (when s5-1 - (when (not (-> self player-in-water?)) - (set! gp-0 #t) - (level-hint-spawn - (game-text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (set! (-> self player-in-water?) s5-1) - ) - (when (logtest? (-> *target* control status) 1) - (let ((s5-2 #t)) - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (vector-! s3-0 (target-pos 0) (-> self bounds-start)) - (set! (-> s3-0 y) 0.0) - (vector-! s4-0 (-> self bounds-end) (-> self bounds-start)) - (if (< (vector-dot s3-0 s4-0) 0.0) - (set! s5-2 #f) - ) - ) - (when (and (not s5-2) (-> self player-in-bounds?)) - (set! gp-0 #t) - (level-hint-spawn - (game-text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (set! (-> self player-in-bounds?) s5-2) - ) - ) - (when gp-0 - (set! (-> self plat-states) (the-as uint 0)) - (set! (-> self last-plat-triggered) -1) - (send-to-all (-> self link) 'notify) - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 0) - (set! (-> a1-9 message) 'untrigger) - (let ((t9-8 send-event-function) - (v1-47 (-> self door)) - ) - (t9-8 (if v1-47 - (-> v1-47 extra process) + (while #t + (when (not (-> self puzzle-beaten?)) + (when (task-complete? *game-info* (game-task sunken-platforms)) + (set! (-> self puzzle-beaten?) #t) + (set! (-> self plat-states) (-> self plat-states-needed-to-open-door)) + (set! (-> self play-door-cam?) #f) + (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) 'trigger) + (let ((t9-1 send-event-function) + (v1-8 (-> self door)) + ) + (t9-1 + (if v1-8 + (-> v1-8 extra process) + ) + a1-1 ) - a1-9 - ) - ) - ) - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 0) - (set! (-> a1-10 message) 'untrigger) - (let ((t9-9 send-event-function) - (v1-51 (-> self door-plat)) ) - (t9-9 (if v1-51 - (-> v1-51 extra process) + ) + (let ((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-12 (-> self door-plat)) + ) + (t9-2 + (if v1-12 + (-> v1-12 extra process) + ) + a1-2 ) - a1-10 + ) + ) + (send-to-all (-> self link) 'notify) ) - ) ) - ) + (when (and *target* (not (-> self puzzle-beaten?))) + (let ((gp-0 #f)) + (let ((s5-1 (logtest? (-> *target* water flags) 512))) + (when s5-1 + (when (not (-> self player-in-water?)) + (set! gp-0 #t) + (level-hint-spawn + (game-text-id sunken-qbert-plat-hint) + "sksp0130" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (set! (-> self player-in-water?) s5-1) + ) + (when (logtest? (-> *target* control status) 1) + (let ((s5-2 #t)) + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (vector-! s3-0 (target-pos 0) (-> self bounds-start)) + (set! (-> s3-0 y) 0.0) + (vector-! s4-0 (-> self bounds-end) (-> self bounds-start)) + (if (< (vector-dot s3-0 s4-0) 0.0) + (set! s5-2 #f) + ) + ) + (when (and (not s5-2) (-> self player-in-bounds?)) + (set! gp-0 #t) + (level-hint-spawn + (game-text-id sunken-qbert-plat-hint) + "sksp0130" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (set! (-> self player-in-bounds?) s5-2) + ) + ) + (when gp-0 + (set! (-> self plat-states) (the-as uint 0)) + (set! (-> self last-plat-triggered) -1) + (send-to-all (-> self link) 'notify) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'untrigger) + (let ((t9-8 send-event-function) + (v1-47 (-> self door)) + ) + (t9-8 + (if v1-47 + (-> v1-47 extra process) + ) + a1-9 + ) + ) + ) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 0) + (set! (-> a1-10 message) 'untrigger) + (let ((t9-9 send-event-function) + (v1-51 (-> self door-plat)) + ) + (t9-9 + (if v1-51 + (-> v1-51 extra process) + ) + a1-10 + ) + ) + ) + ) + ) + ) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) ) (defstate qbert-plat-master-do-door (qbert-plat-master) :code (behavior ((arg0 symbol)) - (when (not (-> self play-door-cam?)) + (when (not (-> self play-door-cam?)) + (cond + (arg0 + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'trigger) + (let ((t9-0 send-event-function) + (v1-3 (-> self door)) + ) + (t9-0 + (if v1-3 + (-> v1-3 extra process) + ) + a1-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) 'trigger) + (let ((t9-1 send-event-function) + (v1-7 (-> self door-plat)) + ) + (t9-1 + (if v1-7 + (-> v1-7 extra process) + ) + a1-1 + ) + ) + ) + ) + (else + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'untrigger) + (let ((t9-2 send-event-function) + (v1-11 (-> self door)) + ) + (t9-2 + (if v1-11 + (-> v1-11 extra process) + ) + a1-2 + ) + ) + ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 0) + (set! (-> a1-3 message) 'untrigger) + (let ((t9-3 send-event-function) + (v1-15 (-> self door-plat)) + ) + (t9-3 + (if v1-15 + (-> v1-15 extra process) + ) + a1-3 + ) + ) + ) + ) + ) + (go qbert-plat-master-idle) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (cond - (arg0 - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'trigger) - (let ((t9-0 send-event-function) - (v1-3 (-> self door)) - ) - (t9-0 (if v1-3 - (-> v1-3 extra process) - ) - a1-0 - ) + (arg0 + (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) + (let ((s5-0 (get-process *default-dead-pool* pov-camera #x4000))) + (when s5-0 + (let ((t9-7 (method-of-type pov-camera activate))) + (t9-7 (the-as pov-camera s5-0) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) + ) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 420) + (suspend) + ) ) - ) - (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) 'trigger) - (let ((t9-1 send-event-function) - (v1-7 (-> self door-plat)) - ) - (t9-1 (if v1-7 - (-> v1-7 extra process) - ) - a1-1 - ) + (else + (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) + (let ((s5-1 (get-process *default-dead-pool* pov-camera #x4000))) + (when s5-1 + (let ((t9-11 (method-of-type pov-camera activate))) + (t9-11 (the-as pov-camera s5-1) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-1 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-close" + 0 + #f + '() + ) + (-> s5-1 ppointer) + ) + ) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (suspend) + ) ) - ) ) - (else - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'untrigger) - (let ((t9-2 send-event-function) - (v1-11 (-> self door)) - ) - (t9-2 (if v1-11 - (-> v1-11 extra process) - ) - a1-2 - ) + (cond + (arg0 + (let ((a1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-12 from) self) + (set! (-> a1-12 num-params) 0) + (set! (-> a1-12 message) 'trigger) + (let ((t9-13 send-event-function) + (v1-41 (-> self door)) + ) + (t9-13 + (if v1-41 + (-> v1-41 extra process) + ) + a1-12 + ) + ) + ) + (let ((a1-13 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-13 from) self) + (set! (-> a1-13 num-params) 0) + (set! (-> a1-13 message) 'trigger) + (let ((t9-14 send-event-function) + (v1-45 (-> self door-plat)) + ) + (t9-14 + (if v1-45 + (-> v1-45 extra process) + ) + a1-13 + ) + ) + ) ) - ) - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 0) - (set! (-> a1-3 message) 'untrigger) - (let ((t9-3 send-event-function) - (v1-15 (-> self door-plat)) - ) - (t9-3 (if v1-15 - (-> v1-15 extra process) - ) - a1-3 - ) + (else + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 0) + (set! (-> a1-14 message) 'untrigger) + (let ((t9-15 send-event-function) + (v1-49 (-> self door)) + ) + (t9-15 + (if v1-49 + (-> v1-49 extra process) + ) + a1-14 + ) + ) + ) + (let ((a1-15 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-15 from) self) + (set! (-> a1-15 num-params) 0) + (set! (-> a1-15 message) 'untrigger) + (let ((t9-16 send-event-function) + (v1-53 (-> self door-plat)) + ) + (t9-16 + (if v1-53 + (-> v1-53 extra process) + ) + a1-15 + ) + ) + ) + (set! (-> self play-door-cam?) #f) ) - ) ) - ) (go qbert-plat-master-idle) + (none) ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (cond - (arg0 - (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) - (let ((s5-0 (get-process *default-dead-pool* pov-camera #x4000))) - (when s5-0 - (let ((t9-7 (method-of-type pov-camera activate))) - (t9-7 - (the-as pov-camera s5-0) - self - 'pov-camera - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-0 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> s5-0 ppointer) - ) - ) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 420) - (suspend) - ) - ) - (else - (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) - (let ((s5-1 (get-process *default-dead-pool* pov-camera #x4000))) - (when s5-1 - (let ((t9-11 (method-of-type pov-camera activate))) - (t9-11 - (the-as pov-camera s5-1) - self - 'pov-camera - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-1 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-close" - 0 - #f - '() - ) - (-> s5-1 ppointer) - ) - ) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (suspend) - ) - ) - ) - (cond - (arg0 - (let ((a1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-12 from) self) - (set! (-> a1-12 num-params) 0) - (set! (-> a1-12 message) 'trigger) - (let ((t9-13 send-event-function) - (v1-41 (-> self door)) - ) - (t9-13 (if v1-41 - (-> v1-41 extra process) - ) - a1-12 - ) - ) - ) - (let ((a1-13 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-13 from) self) - (set! (-> a1-13 num-params) 0) - (set! (-> a1-13 message) 'trigger) - (let ((t9-14 send-event-function) - (v1-45 (-> self door-plat)) - ) - (t9-14 (if v1-45 - (-> v1-45 extra process) - ) - a1-13 - ) - ) - ) - ) - (else - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 0) - (set! (-> a1-14 message) 'untrigger) - (let ((t9-15 send-event-function) - (v1-49 (-> self door)) - ) - (t9-15 (if v1-49 - (-> v1-49 extra process) - ) - a1-14 - ) - ) - ) - (let ((a1-15 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-15 from) self) - (set! (-> a1-15 num-params) 0) - (set! (-> a1-15 message) 'untrigger) - (let ((t9-16 send-event-function) - (v1-53 (-> self door-plat)) - ) - (t9-16 (if v1-53 - (-> v1-53 extra process) - ) - a1-15 - ) - ) - ) - (set! (-> self play-door-cam?) #f) - ) - ) - (go qbert-plat-master-idle) - (none) - ) ) (defstate qbert-plat-master-wait-for-door (qbert-plat-master) :code (behavior () - (while #t - (let* ((v1-0 (-> self door)) - (gp-0 (if v1-0 - (-> v1-0 extra process) - ) + (while #t + (let* ((v1-0 (-> self door)) + (gp-0 (if v1-0 + (-> v1-0 extra process) + ) + ) + (v1-2 (-> self door-plat)) + (s5-0 (if v1-2 + (-> v1-2 extra process) + ) + ) + ) + (when (and gp-0 s5-0) + (logclear! (-> s5-0 mask) (process-mask platform)) + (when (-> self puzzle-beaten?) + (suspend) + (send-event gp-0 'trigger) + (send-event s5-0 'trigger) ) - (v1-2 (-> self door-plat)) - (s5-0 (if v1-2 - (-> v1-2 extra process) - ) - ) - ) - (when (and gp-0 s5-0) - (logclear! (-> s5-0 mask) (process-mask platform)) - (when (-> self puzzle-beaten?) - (suspend) - (send-event gp-0 'trigger) - (send-event s5-0 'trigger) - ) - (go qbert-plat-master-idle) + (go qbert-plat-master-idle) + ) + ) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) ) -(defmethod - init-from-entity! - qbert-plat-master - ((obj qbert-plat-master) (arg0 entity-actor)) +(defmethod init-from-entity! qbert-plat-master ((obj qbert-plat-master) (arg0 entity-actor)) (set! (-> obj last-plat-triggered) -1) (set! (-> obj player-in-water?) #f) (set! (-> obj player-in-bounds?) #f) @@ -895,10 +796,9 @@ (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (set! (-> obj link) (new 'process 'actor-link-info obj)) - (set! - (-> obj plat-states-needed-to-open-door) - (the-as uint (get-matching-actor-type-mask (-> obj link) qbert-plat)) - ) + (set! (-> obj plat-states-needed-to-open-door) + (the-as uint (get-matching-actor-type-mask (-> obj link) qbert-plat)) + ) (set! (-> obj door) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> obj door-plat) (entity-actor-lookup arg0 'alt-actor 1)) (set-vector! (-> obj bounds-start) -39034.88 0.0 27729.92 1.0) @@ -906,12 +806,12 @@ (set-vector! (-> obj bounds-end) 128573.44 0.0 -38420.48 1.0) (vector+! (-> obj bounds-end) (-> obj bounds-end) (-> obj root trans)) (let ((v1-11 (task-complete? *game-info* (game-task sunken-platforms)))) - (set! (-> obj puzzle-beaten?) v1-11) - (when v1-11 - (set! (-> obj plat-states) (-> obj plat-states-needed-to-open-door)) - (set! (-> obj play-door-cam?) #f) + (set! (-> obj puzzle-beaten?) v1-11) + (when v1-11 + (set! (-> obj plat-states) (-> obj plat-states-needed-to-open-door)) + (set! (-> obj play-door-cam?) #f) + ) ) - ) (go qbert-plat-master-wait-for-door) (none) ) diff --git a/goal_src/levels/sunken/sun-iris-door.gc b/goal_src/levels/sunken/sun-iris-door.gc index c0e6c65307..a7f4d2f4ac 100644 --- a/goal_src/levels/sunken/sun-iris-door.gc +++ b/goal_src/levels/sunken/sun-iris-door.gc @@ -47,423 +47,321 @@ (defmethod should-open? sun-iris-door ((obj sun-iris-door)) (let ((f30-0 1228800.0)) - 0.0 - (let ((f0-7 (cond - ((-> obj directional-proximity?) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (when *target* - (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) - (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec)))) + 0.0 + (let ((f0-7 (cond + ((-> obj directional-proximity?) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (when *target* + (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) + (set! (-> s5-0 y) 0.0) + (set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec)))) + ) + (vector-! s5-0 (camera-pos) (-> obj root-override trans)) + (set! (-> s5-0 y) 0.0) + (fabs (vector-dot s5-0 (-> obj outward-vec))) + ) ) - (vector-! s5-0 (camera-pos) (-> obj root-override trans)) - (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> obj outward-vec))) - ) - ) - (else - (if *target* - (set! - f30-0 - (vector-vector-xz-distance - (-> obj root-override trans) - (target-pos 0) + (else + (if *target* + (set! f30-0 (vector-vector-xz-distance (-> obj root-override trans) (target-pos 0))) + ) + (vector-vector-xz-distance (-> obj root-override trans) (camera-pos)) ) - ) ) - (vector-vector-xz-distance - (-> obj root-override trans) - (camera-pos) - ) - ) ) ) - ) - (when (or (>= (-> obj open-dist) f30-0) (>= (-> obj open-dist) f0-7)) - (if - (or - (not (-> obj locked-by-task?)) - (task-complete? *game-info* (-> obj entity extra perm task)) - ) - (return #t) + (when (or (>= (-> obj open-dist) f30-0) (>= (-> obj open-dist) f0-7)) + (if (or (not (-> obj locked-by-task?)) (task-complete? *game-info* (-> obj entity extra perm task))) + (return #t) + ) + ) ) - ) ) - ) #f ) (defstate sun-iris-door-closed (sun-iris-door) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (go sun-iris-door-opening) + (case arg2 + (('trigger) + (go sun-iris-door-opening) + ) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + ) ) - (('move-to) - (set! (-> self move-to?) #t) - (set! - (-> self move-to-pos quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (quaternion-copy! - (-> self move-to-quat) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :trans (behavior () - (when (-> self proximity?) - (if (should-open? self) - (go sun-iris-door-opening) - ) + (when (-> self proximity?) + (if (should-open? self) + (go sun-iris-door-opening) + ) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) + (while #t + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + ) + (none) ) - (none) - ) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (ja-post) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (ja-post) + ) + (none) ) - (none) - ) ) (defstate sun-iris-door-opening (sun-iris-door) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('untrigger) - (go sun-iris-door-closing) + (case arg2 + (('untrigger) + (go sun-iris-door-closing) + ) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + ) ) - (('move-to) - (set! (-> self move-to?) #t) - (set! - (-> self move-to-pos quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (quaternion-copy! - (-> self move-to-quat) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :code (behavior () - (sound-play-by-name - (static-sound-name "irisdoor2") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (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)) + (sound-play-by-name (static-sound-name "irisdoor2") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - (set! (-> a0-3 param 1) 1.0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - 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!) + ) ) - ) + (ja-post) + (go sun-iris-door-open) + (none) ) - (ja-post) - (go sun-iris-door-open) - (none) - ) :post (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (ja-post) + ) + (else + (transform-post) + ) + ) + (none) ) - (none) - ) ) (defmethod should-close? sun-iris-door ((obj sun-iris-door)) (let ((f30-0 1228800.0)) - 0.0 - (let ((f0-7 (cond - ((-> obj directional-proximity?) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (when *target* - (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) - (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec)))) + 0.0 + (let ((f0-7 (cond + ((-> obj directional-proximity?) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (when *target* + (vector-! s5-0 (target-pos 0) (-> obj root-override trans)) + (set! (-> s5-0 y) 0.0) + (set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec)))) + ) + (vector-! s5-0 (camera-pos) (-> obj root-override trans)) + (set! (-> s5-0 y) 0.0) + (fabs (vector-dot s5-0 (-> obj outward-vec))) + ) ) - (vector-! s5-0 (camera-pos) (-> obj root-override trans)) - (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> obj outward-vec))) - ) - ) - (else - (if *target* - (set! - f30-0 - (vector-vector-xz-distance - (-> obj root-override trans) - (target-pos 0) + (else + (if *target* + (set! f30-0 (vector-vector-xz-distance (-> obj root-override trans) (target-pos 0))) + ) + (vector-vector-xz-distance (-> obj root-override trans) (camera-pos)) ) - ) ) - (vector-vector-xz-distance - (-> obj root-override trans) - (camera-pos) - ) - ) ) ) - ) - (when (and (>= f30-0 (-> obj close-dist)) (>= f0-7 (-> obj close-dist))) - (cond - ((and *target* (-> obj directional-proximity?)) - (let ((s4-6 (new 'stack-no-clear 'vector)) - (s5-3 (new 'stack-no-clear 'vector)) + (when (and (>= f30-0 (-> obj close-dist)) (>= f0-7 (-> obj close-dist))) + (cond + ((and *target* (-> obj directional-proximity?)) + (let ((s4-6 (new 'stack-no-clear 'vector)) + (s5-3 (new 'stack-no-clear 'vector)) + ) + (vector-! s4-6 (target-pos 0) (-> obj root-override trans)) + (set! (-> s4-6 y) 0.0) + (vector-! s5-3 (camera-pos) (-> obj root-override trans)) + (set! (-> s5-3 y) 0.0) + (case (>= (vector-dot (-> obj outward-vec) s4-6) 0.0) + (((>= (vector-dot (-> obj outward-vec) s5-3) 0.0)) + (return #t) + ) + ) ) - (vector-! s4-6 (target-pos 0) (-> obj root-override trans)) - (set! (-> s4-6 y) 0.0) - (vector-! s5-3 (camera-pos) (-> obj root-override trans)) - (set! (-> s5-3 y) 0.0) - (case (>= (vector-dot (-> obj outward-vec) s4-6) 0.0) - (((>= (vector-dot (-> obj outward-vec) s5-3) 0.0)) - (return #t) ) - ) + (else + (return #t) + ) + ) ) - ) - (else - (return #t) - ) ) - ) ) - ) #f ) (defstate sun-iris-door-open (sun-iris-door) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (let ((v0-0 (the-as object (-> *display* base-frame-counter)))) - (set! (-> self state-time) (the-as int v0-0)) - v0-0 + (case arg2 + (('trigger) + (let ((v0-0 (the-as object (-> *display* base-frame-counter)))) + (set! (-> self state-time) (the-as int v0-0)) + v0-0 + ) + ) + (('untrigger) + (go sun-iris-door-closing) + ) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) ) ) - (('untrigger) - (go sun-iris-door-closing) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! - (-> self move-to-pos quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (quaternion-copy! - (-> self move-to-quat) - (the-as quaternion (-> arg3 param 1)) - ) - ) ) - ) :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (clear-collide-with-as (-> self root-override)) + (logior! (-> self draw status) (draw-status drwf01)) + (none) + ) :exit (behavior () - (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) - (none) - ) + (restore-collide-with-as (-> self root-override)) + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () - (when (-> self proximity?) - (if (should-close? self) - (go sun-iris-door-closing) - ) - ) - (if - (and - (!= (-> self timeout) 0.0) - (>= - (- (-> *display* base-frame-counter) (-> self state-time)) - (the int (* 300.0 (-> self timeout))) + (when (-> self proximity?) + (if (should-close? self) + (go sun-iris-door-closing) + ) ) - ) - (go sun-iris-door-closing) + (if (and + (!= (-> self timeout) 0.0) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) + ) + (go sun-iris-door-closing) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) + (while #t + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + ) + (none) ) - (none) - ) :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (ja-post) + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (ja-post) + ) + (none) ) - (none) - ) ) (defstate sun-iris-door-closing (sun-iris-door) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('trigger) - (go sun-iris-door-opening) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! - (-> self move-to-pos quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (quaternion-copy! - (-> self move-to-quat) - (the-as quaternion (-> arg3 param 1)) - ) - ) - ) - ) - :code - (behavior () - (sound-play-by-name - (static-sound-name "irisdoor2") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-2 (-> self skel root-channel 0))) - (set! (-> a0-2 param 0) 0.0) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-3 (-> self skel root-channel 0))) - (set! (-> a0-3 param 0) 0.0) - (set! (-> a0-3 param 1) 1.0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (ja-post) - (go sun-iris-door-closed) - (none) - ) - :post - (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) - (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) - ) - (none) - ) - ) - -(defmethod - init-from-entity! - sun-iris-door - ((obj sun-iris-door) (arg0 entity-actor)) - (local-vars (sv-16 res-tag)) - (set! (-> obj move-to?) #f) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) + (case arg2 + (('trigger) + (go sun-iris-door-opening) + ) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 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) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) + :code + (behavior () + (sound-play-by-name (static-sound-name "irisdoor2") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) 0.0) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim #f) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 param 0) 0.0) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (ja-post) + (go sun-iris-door-closed) + (none) + ) + :post + (behavior () + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) + (ja-post) + ) + (else + (transform-post) + ) + ) + (none) + ) + ) + +(defmethod init-from-entity! sun-iris-door ((obj sun-iris-door) (arg0 entity-actor)) + (local-vars (sv-16 res-tag)) + (set! (-> obj move-to?) #f) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) + ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *sun-iris-door-sg* '()) (set! (-> obj close-dist) 49152.0) @@ -472,83 +370,60 @@ (set! (-> obj proximity?) (nonzero? (res-lump-value arg0 'proximity uint128))) (set! (-> obj directional-proximity?) #f) (when (name= (-> obj name) "sun-iris-door-6") - (set! (-> obj close-dist) 16384.0) - (set! (-> obj open-dist) 8192.0) - (set! (-> obj directional-proximity?) #t) - ) + (set! (-> obj close-dist) 16384.0) + (set! (-> obj open-dist) 8192.0) + (set! (-> obj directional-proximity?) #t) + ) (set! (-> obj locked-by-task?) (nonzero? (-> obj entity extra perm task))) (let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0))) - (set-vector! (-> obj root-override scale) f0-11 f0-11 f0-11 1.0) - (set! (-> obj draw bounds w) (* 18432.0 f0-11)) - (let ((v1-25 (-> obj root-override root-prim))) - (set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11)) - ) - ) - (set! sv-16 (new 'static 'res-tag)) - (let - ((v1-28 - (res-lump-data - (-> obj entity) - 'trans-offset - (pointer float) - :tag-ptr - (& sv-16) + (set-vector! (-> obj root-override scale) f0-11 f0-11 f0-11 1.0) + (set! (-> obj draw bounds w) (* 18432.0 f0-11)) + (let ((v1-25 (-> obj root-override root-prim))) + (set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11)) ) - ) ) - (when v1-28 - (+! (-> obj root-override trans x) (-> v1-28 0)) - (+! (-> obj root-override trans y) (-> v1-28 1)) - (+! (-> obj root-override trans z) (-> v1-28 2)) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-28 (res-lump-data (-> obj entity) 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-28 + (+! (-> obj root-override trans x) (-> v1-28 0)) + (+! (-> obj root-override trans y) (-> v1-28 1)) + (+! (-> obj root-override trans z) (-> v1-28 2)) + ) ) - ) (let ((f30-0 (quaternion-y-angle (-> obj root-override quat)))) - (set-vector! (-> obj outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0) - ) + (set-vector! (-> obj outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0) + ) (ja-channel-set! 1) (let ((s5-2 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> obj draw art-group data 3)) - num-func-identity + (joint-control-channel-group-eval! + s5-2 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> s5-2 frame-num) 0.0) ) - (set! (-> s5-2 frame-num) 0.0) - ) (dummy-47 (-> obj root-override)) (ja-post) (go sun-iris-door-closed) (none) ) -(defbehavior - sun-iris-door-init-by-other sun-iris-door - ((arg0 vector) (arg1 quaternion) (arg2 symbol)) +(defbehavior sun-iris-door-init-by-other sun-iris-door ((arg0 vector) (arg1 quaternion) (arg2 symbol)) (set! (-> self move-to?) #f) - (let - ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others)))) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s3-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others)))) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 0) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s3-0 s2-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) 0) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s3-0 s2-0) + (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) + (backup-collide-with-as s3-0) + (set! (-> self root-override) s3-0) ) - (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (backup-collide-with-as s3-0) - (set! (-> self root-override) s3-0) - ) (set! (-> self root-override trans quad) (-> arg0 quad)) (quaternion-copy! (-> self root-override quat) arg1) (initialize-skeleton self *sun-iris-door-sg* '()) @@ -559,46 +434,34 @@ (set! (-> self directional-proximity?) #f) (ja-channel-set! 1) (cond - (arg2 - (let ((s5-1 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> self draw art-group data 3)) - num-func-identity - ) - (set! - (-> s5-1 frame-num) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 3)) - data - 0 - length - ) - -1 + (arg2 + (let ((s5-1 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! (-> s5-1 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1)) + ) ) - ) ) - ) - ) - (else - (let ((s5-2 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> self draw art-group data 3)) - num-func-identity + (else + (let ((s5-2 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + s5-2 + (the-as art-joint-anim (-> self draw art-group data 3)) + num-func-identity + ) + (set! (-> s5-2 frame-num) 0.0) + ) ) - (set! (-> s5-2 frame-num) 0.0) - ) ) - ) (transform-post) (if arg2 - (go sun-iris-door-open) - (go sun-iris-door-closed) - ) + (go sun-iris-door-open) + (go sun-iris-door-closed) + ) (none) ) diff --git a/goal_src/levels/village1/village-obs-VI1.gc b/goal_src/levels/village1/village-obs-VI1.gc index 0d9d020f1f..0e6cc00481 100644 --- a/goal_src/levels/village1/village-obs-VI1.gc +++ b/goal_src/levels/village1/village-obs-VI1.gc @@ -149,128 +149,120 @@ :longest-edge (meters 0.01) ) -(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* 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* 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* 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) - ) - ) - ) +(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) @@ -289,15 +281,15 @@ (defmethod relocate windmill-sail ((obj windmill-sail) (arg0 int)) (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) + (&+! (-> 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)) - ) + (kill-and-free-particles (-> obj part2)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) @@ -310,112 +302,94 @@ :longest-edge (meters 14.9) ) -(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* 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) - ) - ) +(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?) + (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 + (-> 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)) + ) ) - (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) (draw-status drwf06)) + (logclear! (-> self draw status) (draw-status drwf06)) + ) + (none) ) - (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 - init-from-entity! - windmill-sail - ((obj windmill-sail) (arg0 entity-actor)) +(defmethod init-from-entity! windmill-sail ((obj windmill-sail) (arg0 entity-actor)) (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)) @@ -425,18 +399,9 @@ (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)) - ) + (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) ) @@ -465,23 +430,19 @@ (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 - ) + (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) ) - (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 @@ -517,23 +478,19 @@ (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)) + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) (draw-status drwf03)) + (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) + (vector-vector-distance (-> obj root trans) (math-camera-pos)) + ) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) - ) - (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 @@ -547,55 +504,41 @@ (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 + (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) + ) ) - ) - ) - (-> self angle-vel) ) - ) ) + (if (< 291.27112 f0-1) + (set! f0-1 291.27112) ) - (if (< 291.27112 f0-1) - (set! f0-1 291.27112) - ) - (set! (-> self angle-vel) f0-1) + (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) ) - (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 @@ -638,33 +581,25 @@ (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! + (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) ) - (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) ) - (none) - ) :post (the-as (function none :behavior mayorgears) ja-post) ) @@ -701,22 +636,19 @@ (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)) + (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) ) - (none) - ) :code (the-as (function none :behavior reflector-middle) anim-loop) :post (the-as (function none :behavior reflector-middle) ja-post) ) -(defmethod - init-from-entity! - reflector-middle - ((obj reflector-middle) (arg0 entity-actor)) +(defmethod init-from-entity! reflector-middle ((obj reflector-middle) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *reflector-middle-sg* '()) @@ -725,12 +657,12 @@ (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)) + (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) + (logior! (-> obj draw status) (draw-status drwf06)) (go reflector-middle-idle) (none) ) @@ -749,10 +681,7 @@ (the-as (function none :behavior reflector-end) anim-loop) ) -(defmethod - init-from-entity! - reflector-end - ((obj reflector-end) (arg0 entity-actor)) +(defmethod init-from-entity! reflector-end ((obj reflector-end) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (go reflector-end-idle) @@ -789,40 +718,27 @@ (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) - ) + (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) - ) + (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) + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go starfish-patrol) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior starfish) ja-post) ) @@ -830,172 +746,121 @@ (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)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self nav flags) (logior (nav-control-flags bit19) (-> self nav flags))) + (none) ) - (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) - ) - ) + (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) + ) ) - (go starfish-idle) - ) + (none) ) - (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! (-> 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!) + ) ) - ) ) - (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) ) - (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 - ) - ) +(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) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core offense) 2) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) + (set-root-prim! s5-0 s4-0) ) - ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj collide-info) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core offense) 2) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj collide-info) s5-0) - ) 0 (none) ) @@ -1021,89 +886,62 @@ (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!) - ) + (let ((v1-0 (-> self child))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 0 brother)) + (nop!) + (nop!) + ) + ) + v0-0 ) - 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) - ) - ) + (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) - ) - ) + (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) + ) ) - (< (process-drawable-child-count) (-> self child-count)) - ) - (starfish-spawn-child) + (suspend) ) - ) - (suspend) + (none) ) - (none) - ) :post (the-as (function none :behavior villa-starfish) #f) ) -(defmethod - init-from-entity! - villa-starfish - ((obj villa-starfish) (arg0 entity-actor)) +(defmethod init-from-entity! villa-starfish ((obj villa-starfish) (arg0 entity-actor)) (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)) - ) + (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 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) @@ -1122,20 +960,17 @@ (defstate village-fish-idle (village-fish) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (while #t - (suspend) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior village-fish) #f) ) -(defmethod - init-from-entity! - village-fish - ((obj village-fish) (arg0 entity-actor)) +(defmethod init-from-entity! village-fish ((obj village-fish) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (go village-fish-idle) @@ -1173,19 +1008,15 @@ (defun set-period ((arg0 cyclegen) (arg1 int)) (let ((f0-1 (/ 5.0 (the float arg1)))) - (set! (-> arg0 inc) f0-1) - f0-1 - ) + (set! (-> arg0 inc) f0-1) + f0-1 + ) ) (defun update-clock ((arg0 cyclegen)) - (let - ((f0-1 - (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))) - ) + (let ((f0-1 (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))))) + (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) ) - (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) - ) (-> arg0 output) ) @@ -1202,18 +1033,12 @@ (defmethod relocate hutlamp ((obj hutlamp) (arg0 int)) (if (nonzero? (-> obj pivot)) - (&+! (-> obj pivot) arg0) - ) + (&+! (-> obj pivot) arg0) + ) (the-as - hutlamp - ((the-as - (function process-drawable int process-drawable) - (find-parent-method hutlamp 7) - ) - obj - arg0 + hutlamp + ((the-as (function process-drawable int process-drawable) (find-parent-method hutlamp 7)) obj arg0) ) - ) ) (defskelgroup *hutlamp-sg* hutlamp @@ -1227,14 +1052,14 @@ (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) + (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) ) - (none) - ) :post (the-as (function none :behavior hutlamp) ja-post) ) @@ -1278,10 +1103,7 @@ (the-as (function none :behavior revcycleprop) ja-post) ) -(defmethod - init-from-entity! - revcycleprop - ((obj revcycleprop) (arg0 entity-actor)) +(defmethod init-from-entity! revcycleprop ((obj revcycleprop) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *revcycleprop-sg* '()) @@ -1336,37 +1158,35 @@ ) -(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) - ) - ) - ) +(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 + (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/village2/village2-obs.gc b/goal_src/levels/village2/village2-obs.gc index 3b163e562f..82c80cbbc7 100644 --- a/goal_src/levels/village2/village2-obs.gc +++ b/goal_src/levels/village2/village2-obs.gc @@ -68,114 +68,62 @@ :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 + (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!) ) - -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 + (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!) + ) ) - -1 + ) + ((= 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 ) - ) ) - (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) ) - (go-virtual pov-camera-done-playing) - (none) - ) ) (defskelgroup *med-res-rolling-sg* medres-rolling @@ -217,76 +165,68 @@ (defstate pontoon-hidden (pontoon) :enter (behavior () - (logior! (-> self draw status) 2) - (clear-collide-with-as (-> self root-overlay)) - (none) - ) + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self root-overlay)) + (none) + ) :exit (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) - (restore-collide-with-as (-> self root-overlay)) - (none) - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (restore-collide-with-as (-> 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) + (if (task-closed? (the-as game-task (-> self task)) (task-status need-resolution)) + (go-virtual rigid-body-platform-idle) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) ) (defstate pontoon-die (pontoon) :code - (behavior () - (dummy-18 self) - (deactivate self) - (none) - ) + (behavior () (dummy-18 self) (deactivate self) (none)) ) (defstate rigid-body-platform-float (pontoon) :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) - ) - ) - ) + (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) - ) - ) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'die) + (dummy-18 self) + (deactivate self) + ) + ) + ) ) - ) ) (defmethod init-from-entity! pontoon ((obj pontoon) (arg0 entity-actor)) @@ -299,100 +239,84 @@ (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) (set! (-> obj alt-task) (res-lump-value arg0 'alt-task uint)) (cond - ((and - (nonzero? (-> obj alt-task)) - (task-closed? - (the-as game-task (-> obj alt-task)) - (task-status need-resolution) + ((and + (nonzero? (-> obj alt-task)) + (task-closed? (the-as game-task (-> obj alt-task)) (task-status need-resolution)) + ) + (go pontoon-die) + ) + ((zero? (-> obj task)) + (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) ) - ) - (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) - ) + ((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 *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" - ) - ) +(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) () @@ -429,44 +353,26 @@ ) (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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) + (set-root-prim! s5-0 s4-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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) @@ -477,29 +383,29 @@ (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) - ) + (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) - ) + (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) - ) + (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! (-> 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 @@ -507,44 +413,26 @@ ) (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) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (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) + (set-root-prim! s5-0 s4-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) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) @@ -555,124 +443,114 @@ (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) - ) + (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) - ) + (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) - ) + (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! (-> 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-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* 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* 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) - ) - ) - ) +(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) @@ -695,97 +573,61 @@ (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) - ) - ) + (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) - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (none) - ) + (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) :trans (behavior () - (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)) - ) + (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) ) - (none) - ) :code - (behavior ((arg0 handle)) - (clone-anim arg0 3 #t "") - (dummy-18 self) - (deactivate self) - (none) - ) + (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") (dummy-18 self) (deactivate self) (none)) ) (defstate allpontoons-idle (allpontoons) :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) + (case arg2 + (('clone) + (go allpontoons-be-clone (the-as handle (-> arg3 param 0))) ) ) - (dummy-18 self) - (deactivate self) - ) - (logior! (-> self mask) (process-mask sleep)) - (suspend) ) - (none) - ) + :enter + (behavior () (logior! (-> self draw status) (draw-status drwf01)) (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 init-from-entity! allpontoons ((obj allpontoons) (arg0 entity-actor)) @@ -793,10 +635,7 @@ (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) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 563) obj)) (go allpontoons-idle) (none) ) @@ -823,18 +662,18 @@ (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 + (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) ) - (set! (-> v1-1 local-sphere x) 0.0) - (set! (-> v1-1 local-sphere w) 24576.0) - ) 0 (none) ) @@ -842,409 +681,312 @@ (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) - (the-as uint (-> *display* base-frame-counter)) + (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) (the-as uint (-> *display* base-frame-counter))) + (set! v0-1 (-> v1-6 root trans)) + ) + (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad)) ) - (set! v0-1 (-> v1-6 root trans)) + (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)) + ) ) - (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)) - ) + (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))) + ) + (logclear! (-> self draw status) (draw-status drwf01)) + (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) ) - (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) - ) + (behavior () (stop! (-> self sound)) (none)) :trans - (behavior () - (fireboulder-hover-stuff) - (update! (-> self sound)) - (none) - ) + (behavior () (fireboulder-hover-stuff) (update! (-> self sound)) (none)) :code (behavior () - (while #t - (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) - ) + (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!) + ) + ) ) - (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) ) - (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) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 + (('stop-cloning) + (go fireboulder-hover) + ) + ) + ) :enter - (behavior ((arg0 handle)) - (logclear! (-> self mask) (process-mask actor-pause)) - (none) - ) + (behavior ((arg0 handle)) (logclear! (-> self mask) (process-mask actor-pause)) (none)) :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (set! (-> self skel status) (logand -33 (-> self skel status))) - (none) - ) + (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) - ) + (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))) + (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) - ) + (let ((a0-1 (handle->process (-> self tracker)))) + (if a0-1 + (deactivate a0-1) + ) + ) + (none) ) - (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 - ) - (the-as uint (-> *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) + (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) + (the-as uint (-> *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!) + ) ) - ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior fireboulder) ja-post) ) (defmethod init-from-entity! fireboulder ((obj fireboulder) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) + (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) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 transform-index) 4) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-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) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 256) + (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) + (append-prim s3-0 s2-1) ) - ) ) - (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) - (append-prim s3-0 s2-1) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (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) - ) + ((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) + ) ) - (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) + ((zero? (-> obj task)) + (go fireboulder-idle) + ) + ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) + (go fireboulder-hover) + ) + (else + (go fireboulder-idle) + ) ) - ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) - (go fireboulder-hover) - ) - (else - (go fireboulder-idle) - ) - ) (none) ) @@ -1268,57 +1010,44 @@ (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) - ) + (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!) + ) + ) ) - (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) ) - (none) - ) :post (the-as (function none :behavior ceilingflag) ja-post) ) @@ -1354,105 +1083,80 @@ ) (defmethod skip-reminder? exit-chamber-dummy ((obj exit-chamber-dummy)) - (case (get-reminder (get-task-control (game-task sunken-room)) 0) - ((2) + (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) + (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 - (pickup-type fuel-cell) - 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) + (logior! (-> self draw status) (draw-status drwf01)) + (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 (pickup-type fuel-cell) 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) ) - (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))) - ) + (logclear! (-> self draw status) (draw-status drwf01)) + (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-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) - ) - ) + (let ((a0-11 (handle->process (-> self fcell-handle)))) + (if a0-11 + (deactivate a0-11) + ) ) - (suspend) - ) + (go exit-chamber-dummy-wait-to-appear) + (none) ) - (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 - init-from-entity! - exit-chamber-dummy - ((obj exit-chamber-dummy) (arg0 entity-actor)) +(defmethod init-from-entity! exit-chamber-dummy ((obj exit-chamber-dummy) (arg0 entity-actor)) (set! (-> obj fcell-handle) (the-as handle #f)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) @@ -1462,14 +1166,14 @@ (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 + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) ) - (set! (-> s5-1 frame-num) 0.0) - ) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) (go exit-chamber-dummy-wait-to-appear) (none) ) @@ -1492,299 +1196,253 @@ :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-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* 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-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-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-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-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* 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* 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* 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) - ) - ) - ) +(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) - ) + (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook nothing) - ) 0 (none) ) @@ -1792,44 +1450,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook nothing) - ) 0 (none) ) @@ -1837,44 +1473,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook boulder2-trans-2) - ) 0 (none) ) @@ -1882,44 +1496,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook nothing) - ) 0 (none) ) @@ -1927,44 +1519,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook boulder3-trans-2) - ) 0 (none) ) @@ -1972,44 +1542,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook nothing) - ) 0 (none) ) @@ -2017,44 +1565,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook boulder4-trans-3) - ) 0 (none) ) @@ -2062,44 +1588,22 @@ (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) + (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) + ) ) - ) - (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) ) - (send-event self 'trans-hook boulder4-trans-2) - ) 0 (none) ) @@ -2109,207 +1613,97 @@ 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 + (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) + ) + ) + ) ) - ) - ) - (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))) + (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 ) - (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! - ) + (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) ) - (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) ) @@ -2319,299 +1713,169 @@ 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 + (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!) ) - -1 + (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!) + ) + ) + ) ) - ) ) - (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) + ) + ) + ) ) - ) - (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) ) - (none) - ) :post (the-as (function none :behavior ogreboss-village2) ja-post) ) -(defmethod - init-from-entity! - ogreboss-village2 - ((obj ogreboss-village2) (arg0 entity-actor)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) - (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) - (append-prim s3-0 s2-0) - ) +(defmethod init-from-entity! ogreboss-village2 ((obj ogreboss-village2) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core action) (the-as uint 1)) + (set! (-> s2-0 prim-core offense) 1) + (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) + (append-prim s3-0 s2-0) + ) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *ogreboss-village2-sg* '()) (set-vector! (-> obj root scale) 0.65 0.65 0.65 1.0) @@ -2641,37 +1905,35 @@ ) -(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) - ) - ) - ) +(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 + (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/goalc/debugger/Debugger.cpp b/goalc/debugger/Debugger.cpp index 3bf93cfb58..582776a9da 100644 --- a/goalc/debugger/Debugger.cpp +++ b/goalc/debugger/Debugger.cpp @@ -247,8 +247,11 @@ std::vector Debugger::get_backtrace(u64 rip, u64 rsp) { fmt::print("Unknown Function at rip\n"); } + /* + bool found = false; if (s32(rip - m_debug_context.base) > 0 && m_symbol_name_to_value_map.find("function") != m_symbol_name_to_value_map.cend()) { + fmt::print("Attempting to find function at this address.\n"); u32 function_sym_val = m_symbol_name_to_value_map.at("function"); u32 goal_pc = u32(rip - m_debug_context.base) & -8; @@ -270,30 +273,29 @@ std::vector Debugger::get_backtrace(u64 rip, u64 rsp) { } } - if (goal_pc == symtable_end) { + if (goal_pc <= symtable_end) { fmt::print("Could not find function within this address.\n"); - break; + } else { + rip = goal_pc + m_debug_context.base + BASIC_OFFSET; + found = true; } - - rip = goal_pc + m_debug_context.base + BASIC_OFFSET; - rsp = rsp + 8; // 8 for the call itself. - } else if (fails > 50) { + } else*/ + if (fails > 50) { fmt::print( "Backtrace was too long. Exception might have happened outside GOAL code, or the " "stack frame is too long.\n"); break; - } else { - // attempt to backtrace anyway! if this fails then rip - u64 next_rip = 0; - if (!read_memory_if_safe(&next_rip, rsp - m_debug_context.base)) { - fmt::print("Invalid return address encountered!\n"); - break; - } - - rip = next_rip; - rsp = rsp + 8; // 8 for the call itself. - ++fails; } + // attempt to backtrace anyway! if this fails then rip + u64 next_rip = 0; + if (!read_memory_if_safe(&next_rip, rsp - m_debug_context.base)) { + fmt::print("Invalid return address encountered!\n"); + break; + } + + rip = next_rip; + rsp = rsp + 8; // 8 for the call itself. + ++fails; // break; } else if (!frame.rip_info.func_debug) { fmt::print("Function {} has no debug info.\n", frame.rip_info.function_name); diff --git a/scripts/batch/decomp-jak2.bat b/scripts/batch/decomp-jak2.bat new file mode 100644 index 0000000000..b7dd544456 --- /dev/null +++ b/scripts/batch/decomp-jak2.bat @@ -0,0 +1,4 @@ +@echo off +cd ..\.. +out\build\Release\bin\decompiler decompiler\config\jak2_ntsc_v1.jsonc iso_data\jak2 decompiler_out\jak2 +pause diff --git a/scripts/update-goal-src.py b/scripts/update-goal-src.py index 68456c392b..e1614aa283 100644 --- a/scripts/update-goal-src.py +++ b/scripts/update-goal-src.py @@ -28,7 +28,6 @@ files_with_modifications = [ "cam-master", "generic-obs", "target-snowball", - "quicksandlurker", "logic-target", "default-menu", "collide-shape", diff --git a/test/decompiler/reference/decompiler-macros.gc b/test/decompiler/reference/decompiler-macros.gc index 30fd8e9d2e..a0c7557e5a 100644 --- a/test/decompiler/reference/decompiler-macros.gc +++ b/test/decompiler/reference/decompiler-macros.gc @@ -123,7 +123,7 @@ ) (defmacro ppointer->handle (pproc) - `(let ((the-process ,pproc)) + `(let ((the-process (the-as (pointer process) ,pproc))) (new 'static 'handle :process the-process :pid (-> the-process 0 pid)) ) ) diff --git a/test/decompiler/reference/engine/anim/bones-h_REF.gc b/test/decompiler/reference/engine/anim/bones-h_REF.gc index 4beadda4d5..e9c48dd8f6 100644 --- a/test/decompiler/reference/engine/anim/bones-h_REF.gc +++ b/test/decompiler/reference/engine/anim/bones-h_REF.gc @@ -47,9 +47,9 @@ ;; definition of type bone-regs (deftype bone-regs (structure) - ((joint-ptr (pointer joint) :offset-assert 0) - (bone-ptr (pointer bone) :offset-assert 4) - (num-bones uint32 :offset-assert 8) + ((joint-ptr (inline-array joint) :offset-assert 0) + (bone-ptr (inline-array bone) :offset-assert 4) + (num-bones uint32 :offset-assert 8) ) :method-count-assert 9 :size-assert #xc @@ -67,20 +67,20 @@ ;; definition of type bone-work (deftype bone-work (structure) - ((layout bone-layout :inline :offset-assert 0) - (bounds sphere :inline :offset-assert 32) - (lights vu-lights :inline :offset-assert 48) - (distance vector :inline :offset-assert 160) - (next-tag dma-packet :inline :offset-assert 176) - (dma-buf dma-buffer :offset-assert 192) - (sink-group basic :offset-assert 196) - (next-pris dma-packet :offset-assert 200) - (next-merc dma-packet :offset-assert 204) - (wait-count uint32 :offset-assert 208) - (in-count uint32 :offset-assert 212) - (sp-size uint32 :offset-assert 216) - (sp-bufnum uint32 :offset-assert 220) - (regs bone-regs :inline :offset-assert 224) + ((layout bone-layout :inline :offset-assert 0) + (bounds sphere :inline :offset-assert 32) + (lights vu-lights :inline :offset-assert 48) + (distance vector :inline :offset-assert 160) + (next-tag dma-packet :inline :offset-assert 176) + (dma-buf dma-buffer :offset-assert 192) + (sink-group dma-foreground-sink-group :offset-assert 196) + (next-pris dma-packet :offset-assert 200) + (next-merc dma-packet :offset-assert 204) + (wait-count uint32 :offset-assert 208) + (in-count uint32 :offset-assert 212) + (sp-size uint32 :offset-assert 216) + (sp-bufnum uint32 :offset-assert 220) + (regs bone-regs :inline :offset-assert 224) ) :method-count-assert 9 :size-assert #xec @@ -198,8 +198,8 @@ obj ) -;; definition for symbol *merc-globals*, type symbol -(define *merc-globals* #f) +;; definition for symbol *merc-globals*, type merc-globals +(define *merc-globals* (the-as merc-globals #f)) ;; definition of type shadow-dma-packet (deftype shadow-dma-packet (structure) diff --git a/test/decompiler/reference/engine/anim/joint-h_REF.gc b/test/decompiler/reference/engine/anim/joint-h_REF.gc index 46dd265693..1d5a937d43 100644 --- a/test/decompiler/reference/engine/anim/joint-h_REF.gc +++ b/test/decompiler/reference/engine/anim/joint-h_REF.gc @@ -44,25 +44,25 @@ ;; definition of type joint-control (deftype joint-control (basic) - ((status uint16 :offset-assert 4) - (allocated-length int16 :offset-assert 6) - (root-channel (inline-array joint-control-channel) :offset 16) - (blend-index int32 :offset-assert 20) - (active-channels int32 :offset-assert 24) - (generate-frame-function (function pointer int process-drawable none) :offset-assert 28) - (prebind-function (function pointer int process-drawable none) :offset-assert 32) - (postbind-function (function pointer int process-drawable none) :offset-assert 36) - (effect effect-control :offset-assert 40) - (channel joint-control-channel 3 :inline :offset-assert 48) - (frame-group0 art-joint-anim :offset 60) - (frame-num0 float :offset 64) - (frame-interp0 float :offset 56) - (frame-group1 art-joint-anim :offset 108) - (frame-num1 float :offset 112) - (frame-interp1 float :offset 104) - (frame-group2 art-joint-anim :offset 156) - (frame-num2 float :offset 160) - (frame-interp2 float :offset 152) + ((status uint16 :offset-assert 4) + (allocated-length int16 :offset-assert 6) + (root-channel (inline-array joint-control-channel) :offset 16) + (blend-index int32 :offset-assert 20) + (active-channels int32 :offset-assert 24) + (generate-frame-function (function (inline-array vector) int process-drawable int) :offset-assert 28) + (prebind-function (function pointer int process-drawable none) :offset-assert 32) + (postbind-function (function process-drawable none) :offset-assert 36) + (effect effect-control :offset-assert 40) + (channel joint-control-channel 3 :inline :offset-assert 48) + (frame-group0 art-joint-anim :offset 60) + (frame-num0 float :offset 64) + (frame-interp0 float :offset 56) + (frame-group1 art-joint-anim :offset 108) + (frame-num1 float :offset 112) + (frame-interp1 float :offset 104) + (frame-group2 art-joint-anim :offset 156) + (frame-num2 float :offset 160) + (frame-interp2 float :offset 152) ) :method-count-assert 11 :size-assert #xc0 @@ -158,6 +158,8 @@ (jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328) (fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392) (frame-data joint-anim-compressed-frame 2 :inline :offset-assert 9600) + (flatten-array float 576 :offset 2400) + (flattened vector 24 :inline :offset 2400) ) :method-count-assert 9 :size-assert #x3640 diff --git a/test/decompiler/reference/engine/anim/joint_REF.gc b/test/decompiler/reference/engine/anim/joint_REF.gc index 5ae6da0a26..7dbf3d7574 100644 --- a/test/decompiler/reference/engine/anim/joint_REF.gc +++ b/test/decompiler/reference/engine/anim/joint_REF.gc @@ -162,9 +162,7 @@ (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 generate-frame-function) create-interpolated-joint-animation-frame) (set! (-> v0-0 prebind-function) #f) (set! (-> v0-0 postbind-function) #f) (set! (-> v0-0 effect) #f) @@ -804,94 +802,8 @@ ) ;; 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) - ) +(defun flatten-joint-control-to-spr ((arg0 joint-control)) (rlet ((vf1 :class vf) (vf10 :class vf) (vf11 :class vf) @@ -907,219 +819,158 @@ (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) + (let ((nb-channels (-> arg0 active-channels))) + (let ((f0-0 1.0) + (v1-0 0) + (a1-0 (the-as (inline-array vector) #x70000970)) + ) + (dotimes (a0-1 nb-channels) + (let ((a2-3 (-> arg0 channel a0-1))) + (case (-> a2-3 command) + (('push) + (let ((a2-4 (&+ (the-as pointer a1-0) v1-0))) + (set! (-> a1-0 0 quad) (the-as uint128 0)) + (set! (-> a1-0 1 quad) (the-as uint128 0)) + (set! (-> a1-0 2 quad) (the-as uint128 0)) + (set! (-> a1-0 3 quad) (the-as uint128 0)) + (set! (-> a1-0 4 quad) (the-as uint128 0)) + (set! (-> a1-0 5 quad) (the-as uint128 0)) + (set! (-> (the-as (pointer float) a2-4)) f0-0) + ) + (set! a1-0 (the-as (inline-array vector) (-> a1-0 6))) + ) + (('blend 'push1) + (let ((f1-0 (-> a2-3 frame-interp))) + (let ((a2-5 (- f0-0 f1-0))) + (.mov vf1 a2-5) + ) + (let ((a1-1 (the-as (inline-array vector) (-> a1-0 -6)))) + (.lvf vf2 (&-> a1-1 0 quad)) + (let ((a2-6 (&+ (the-as pointer a1-1) v1-0))) + (.lvf vf3 (&-> a1-1 1 quad)) + (.lvf vf4 (&-> a1-1 2 quad)) + (.lvf vf5 (&-> a1-1 3 quad)) + (.lvf vf6 (&-> a1-1 4 quad)) + (.lvf vf7 (&-> a1-1 5 quad)) + (.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) + (.svf (&-> a1-1 0 quad) vf2) + (.svf (&-> a1-1 1 quad) vf3) + (.svf (&-> a1-1 2 quad) vf4) + (.svf (&-> a1-1 3 quad) vf5) + (.svf (&-> a1-1 4 quad) vf6) + (.svf (&-> a1-1 5 quad) vf7) + (set! (-> (the-as (pointer float) a2-6)) (+ (-> (the-as (pointer float) a2-6) 0) f1-0)) + ) + (set! a1-0 (the-as (inline-array vector) (-> a1-1 6))) + ) + ) + ) + (('stack) + (let* ((f2-2 (-> a2-3 frame-interp)) + (f1-2 (- f0-0 f2-2)) + (a1-2 (the-as (inline-array vector) (-> a1-0 -12))) + ) + (let ((a2-7 f2-2)) + (.mov vf1 a2-7) + ) + (let ((a2-8 f1-2)) + (.mov vf2 a2-8) + ) + (.lvf vf3 (&-> a1-2 0 quad)) + (.lvf vf4 (&-> a1-2 1 quad)) + (.lvf vf5 (&-> a1-2 2 quad)) + (.lvf vf6 (&-> a1-2 3 quad)) + (.lvf vf7 (&-> a1-2 4 quad)) + (.lvf vf8 (&-> a1-2 5 quad)) + (.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 6 quad)) + (.lvf vf10 (&-> a1-2 7 quad)) + (.lvf vf11 (&-> a1-2 8 quad)) + (.lvf vf12 (&-> a1-2 9 quad)) + (.lvf vf13 (&-> a1-2 10 quad)) + (.lvf vf14 (&-> a1-2 11 quad)) + (.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) + (.svf (&-> a1-2 0 quad) vf3) + (.svf (&-> a1-2 1 quad) vf4) + (.svf (&-> a1-2 2 quad) vf5) + (.svf (&-> a1-2 3 quad) vf6) + (.svf (&-> a1-2 4 quad) vf7) + (.svf (&-> a1-2 5 quad) vf8) + (set! a1-0 (the-as (inline-array vector) (-> a1-2 6))) + ) + ) ) - (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)) + ) + (+! v1-0 4) ) - (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))) + ) + (let ((upl-idx 0)) + (dotimes (ch nb-channels) + (when (< 0.001 (-> (the-as terrain-context #x70000000) work foreground joint-work flatten-array ch)) + (let* ((v1-9 (-> arg0 channel ch)) + (s2-0 (-> v1-9 frame-group frames)) + (f0-2 (-> v1-9 frame-num)) + (s1-0 (the int f0-2)) + (f30-0 (- f0-2 (the float s1-0))) + ) + (let ((s0-0 (+ (-> s2-0 num-frames) -1))) + (if (not (-> v1-9 frame-group)) + (format 0 "Channel ~D skel ~A frame-group is #f!!!~%" ch arg0) + ) + (when (>= s1-0 (the-as int s0-0)) + (set! f30-0 0.0) + (set! s1-0 (the-as int s0-0)) + ) + ) + (let ((v1-18 (-> (the-as terrain-context #x70000000) work foreground joint-work uploads upl-idx))) + (set! (-> v1-18 fixed) (-> s2-0 fixed)) + (set! (-> v1-18 fixed-qwc) (the-as int (-> s2-0 fixed-qwc))) + (set! (-> v1-18 frame) (-> s2-0 data s1-0)) + (set! (-> v1-18 frame-qwc) (the-as int (if (= f30-0 0.0) + (-> s2-0 frame-qwc) + (* (-> s2-0 frame-qwc) 2) + ) + ) + ) + (set! (-> v1-18 amount) (-> (the-as terrain-context #x70000000) work foreground joint-work flatten-array ch)) + (set! (-> v1-18 interp) f30-0) + ) + ) + (+! upl-idx 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! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 11 scale x) + (the-as float upl-idx) + ) + ) + (dotimes (v1-24 nb-channels) + (set! (-> arg0 channel v1-24 inspector-amount) + (-> (the-as terrain-context #x70000000) work foreground joint-work flatten-array v1-24) + ) ) - (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) + 0 ) ) @@ -1208,9 +1059,12 @@ (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)) - ) + (let ((a2-3 (matrix-from-control-channel! + (the-as matrix (+ 16 (the-as int (the-as terrain-context #x70000000)))) + arg2 + (the-as joint-control-channel arg1) + ) + ) ) (matrix-lerp! arg0 arg0 a2-3 f30-0) ) @@ -1319,10 +1173,26 @@ ) ;; definition for function cspace<-rot-yxy! -;; ERROR: function has no type analysis. Cannot decompile. +(defun cspace<-rot-yxy! ((arg0 cspace) (arg1 transform)) + (let ((s5-0 (-> arg0 bone transform))) + (matrix-rotate-yxy! s5-0 (-> arg1 rot)) + (scale-matrix! s5-0 (-> arg1 scale) s5-0) + ) + ) ;; definition for function cspace<-transform-yxy! -;; ERROR: function has no type analysis. Cannot decompile. +(defun cspace<-transform-yxy! ((arg0 cspace) (arg1 transform)) + (let ((s4-0 (-> arg0 bone transform)) + (s5-0 (new 'stack-no-clear 'matrix)) + (s3-0 (new 'stack-no-clear 'matrix)) + ) + (matrix-identity! s4-0) + (matrix-translate! s4-0 (-> arg1 trans)) + (matrix-rotate-yxy! s5-0 (-> arg1 rot)) + (matrix*! s3-0 s5-0 s4-0) + (scale-matrix! s4-0 (-> arg1 scale) s3-0) + ) + ) ;; definition for function cspace<-transformq! (defun cspace<-transformq! ((arg0 cspace) (arg1 transformq)) @@ -1347,7 +1217,13 @@ ;; 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)) + (let ((v1-2 (matrix-from-control! + (the-as matrix-stack (+ 80 (the-as int (the-as terrain-context #x70000000)))) + (-> arg0 joint) + arg1 + 'no-push + ) + ) (v0-1 (-> arg0 bone transform)) ) (let ((a0-4 (-> v1-2 vector 0 quad)) @@ -1408,246 +1284,150 @@ ;; 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) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 scale x) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 108 4))) ) - (s.w! (+ a0-2 1632) v1-1) - ) - (let ((v1-3 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) - (a0-5 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 scale y) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) ) - (s.w! (+ a0-5 1636) v1-3) - ) - (let ((v1-5 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 233 4))) - (a0-8 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 scale z) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 233 4))) ) - (s.w! (+ a0-8 1640) v1-5) - ) - (let ((v1-7 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) - (a0-11 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 scale w) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) ) - (s.w! (+ a0-11 1644) v1-7) - ) - (let ((v1-9 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 301 4))) - (a0-14 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 cache bone-matrix) + (the-as uint (+ (the-as uint decompress-fixed-data-to-accumulator) (* 301 4))) ) - (s.w! (+ a0-14 1648) v1-9) - ) - (let ((v1-11 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) - (a0-17 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 cache parent-matrix) + (the-as uint (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) ) - (s.w! (+ a0-17 1652) v1-11) - ) - (let ((v1-13 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 387 4))) - (a0-20 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 cache dummy) + (the-as uint (+ (the-as uint decompress-fixed-data-to-accumulator) (* 387 4))) ) - (s.w! (+ a0-20 1656) v1-13) - ) - (let ((v1-15 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) - (a0-23 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 3 cache frame) + (the-as uint (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) ) - (s.w! (+ a0-23 1660) v1-15) - ) - (let ((v1-17 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 155 4))) - (a0-26 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 0 x) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 155 4))) ) - (s.w! (+ a0-26 1664) v1-17) - ) - (let ((v1-19 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) - (a0-29 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 0 y) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 199 4))) ) - (s.w! (+ a0-29 1668) v1-19) - ) - (let ((v1-21 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 261 4))) - (a0-32 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 0 z) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 261 4))) ) - (s.w! (+ a0-32 1672) v1-21) - ) - (let ((v1-23 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) - (a0-35 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 0 w) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 286 4))) ) - (s.w! (+ a0-35 1676) v1-23) - ) - (let ((v1-25 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 335 4))) - (a0-38 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 1 x) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 335 4))) ) - (s.w! (+ a0-38 1680) v1-25) - ) - (let ((v1-27 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) - (a0-41 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 1 y) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 366 4))) ) - (s.w! (+ a0-41 1684) v1-27) - ) - (let ((v1-29 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 402 4))) - (a0-44 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 1 z) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 402 4))) ) - (s.w! (+ a0-44 1688) v1-29) - ) - (let ((v1-31 (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) - (a0-47 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 1 w) + (the-as float (+ (the-as uint decompress-fixed-data-to-accumulator) (* 100 4))) ) - (s.w! (+ a0-47 1692) v1-31) - ) - (let ((v1-33 (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) - (a0-50 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 2 x) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) ) - (s.w! (+ a0-50 1696) v1-33) - ) - (let ((v1-35 (+ (the-as uint decompress-frame-data-to-accumulator) (* 92 4))) - (a0-53 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 2 y) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 92 4))) ) - (s.w! (+ a0-53 1700) v1-35) - ) - (let ((v1-37 (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) - (a0-56 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 2 z) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) ) - (s.w! (+ a0-56 1704) v1-37) - ) - (let ((v1-39 (+ (the-as uint decompress-frame-data-to-accumulator) (* 140 4))) - (a0-59 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 2 w) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 140 4))) ) - (s.w! (+ a0-59 1708) v1-39) - ) - (let ((v1-41 (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) - (a0-62 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 3 x) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) ) - (s.w! (+ a0-62 1712) v1-41) - ) - (let ((v1-43 (+ (the-as uint decompress-frame-data-to-accumulator) (* 220 4))) - (a0-65 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 3 y) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 220 4))) ) - (s.w! (+ a0-65 1716) v1-43) - ) - (let ((v1-45 (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) - (a0-68 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 3 z) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) ) - (s.w! (+ a0-68 1720) v1-45) - ) - (let ((v1-47 (+ (the-as uint decompress-frame-data-to-accumulator) (* 307 4))) - (a0-71 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 transform vector 3 w) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 307 4))) ) - (s.w! (+ a0-71 1724) v1-47) - ) - (let ((v1-49 (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) - (a0-74 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 scale x) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 84 4))) ) - (s.w! (+ a0-74 1728) v1-49) - ) - (let ((v1-51 (+ (the-as uint decompress-frame-data-to-accumulator) (* 107 4))) - (a0-77 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 scale y) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 107 4))) ) - (s.w! (+ a0-77 1732) v1-51) - ) - (let ((v1-53 (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) - (a0-80 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 scale z) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 119 4))) ) - (s.w! (+ a0-80 1736) v1-53) - ) - (let ((v1-55 (+ (the-as uint decompress-frame-data-to-accumulator) (* 174 4))) - (a0-83 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 scale w) + (the-as float (+ (the-as uint decompress-frame-data-to-accumulator) (* 174 4))) ) - (s.w! (+ a0-83 1740) v1-55) - ) - (let ((v1-57 (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) - (a0-86 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 cache bone-matrix) + (the-as uint (+ (the-as uint decompress-frame-data-to-accumulator) (* 205 4))) ) - (s.w! (+ a0-86 1744) v1-57) - ) - (let ((v1-59 (+ (the-as uint decompress-frame-data-to-accumulator) (* 248 4))) - (a0-89 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 cache parent-matrix) + (the-as uint (+ (the-as uint decompress-frame-data-to-accumulator) (* 248 4))) ) - (s.w! (+ a0-89 1748) v1-59) - ) - (let ((v1-61 (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) - (a0-92 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 cache dummy) + (the-as uint (+ (the-as uint decompress-frame-data-to-accumulator) (* 273 4))) ) - (s.w! (+ a0-92 1752) v1-61) - ) - (let ((v1-63 (+ (the-as uint decompress-frame-data-to-accumulator) (* 354 4))) - (a0-95 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 4 cache frame) + (the-as uint (+ (the-as uint decompress-frame-data-to-accumulator) (* 354 4))) ) - (s.w! (+ a0-95 1756) v1-63) - ) - (let ((v1-65 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) - (a0-98 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 0 x) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) ) - (s.w! (+ a0-98 1760) v1-65) - ) - (let ((v1-67 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 125 4))) - (a0-101 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 0 y) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 125 4))) ) - (s.w! (+ a0-101 1764) v1-67) - ) - (let ((v1-69 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) - (a0-104 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 0 z) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) ) - (s.w! (+ a0-104 1768) v1-69) - ) - (let ((v1-71 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 197 4))) - (a0-107 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 0 w) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 197 4))) ) - (s.w! (+ a0-107 1772) v1-71) - ) - (let ((v1-73 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) - (a0-110 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 1 x) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) ) - (s.w! (+ a0-110 1776) v1-73) - ) - (let ((v1-75 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 318 4))) - (a0-113 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 1 y) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 318 4))) ) - (s.w! (+ a0-113 1780) v1-75) - ) - (let ((v1-77 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) - (a0-116 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 1 z) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) ) - (s.w! (+ a0-116 1784) v1-77) - ) - (let ((v1-79 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 459 4))) - (a0-119 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 1 w) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 459 4))) ) - (s.w! (+ a0-119 1788) v1-79) - ) - (let ((v1-81 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) - (a0-122 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 2 x) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 117 4))) ) - (s.w! (+ a0-122 1792) v1-81) - ) - (let ((v1-83 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 150 4))) - (a0-125 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 2 y) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 150 4))) ) - (s.w! (+ a0-125 1796) v1-83) - ) - (let ((v1-85 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) - (a0-128 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 2 z) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 169 4))) ) - (s.w! (+ a0-128 1800) v1-85) - ) - (let ((v1-87 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 248 4))) - (a0-131 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 2 w) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 248 4))) ) - (s.w! (+ a0-131 1804) v1-87) - ) - (let ((v1-89 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) - (a0-134 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 3 x) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 293 4))) ) - (s.w! (+ a0-134 1808) v1-89) - ) - (let ((v1-91 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 366 4))) - (a0-137 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 3 y) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 366 4))) ) - (s.w! (+ a0-137 1812) v1-91) - ) - (let ((v1-93 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) - (a0-140 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 3 z) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 408 4))) ) - (s.w! (+ a0-140 1816) v1-93) - ) - (let ((v1-95 (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 533 4))) - (a0-143 #x70000000) + (set! (-> (the-as terrain-context #x70000000) work foreground bone-mem buffer 0 bone 5 transform vector 3 w) + (the-as float (+ (the-as uint decompress-frame-data-pair-to-accumulator) (* 533 4))) ) - (s.w! (+ a0-143 1820) v1-95) - ) 0 ) @@ -1655,7 +1435,7 @@ ;; 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)) +(defun create-interpolated-joint-animation-frame ((arg0 (inline-array vector)) (arg1 int) (arg2 process-drawable)) (flatten-joint-control-to-spr (-> arg2 skel)) (make-joint-jump-tables) (calc-animation-from-spr arg0 arg1) diff --git a/test/decompiler/reference/engine/camera/pov-camera_REF.gc b/test/decompiler/reference/engine/camera/pov-camera_REF.gc index c95ec46ee1..c9d86ae52e 100644 --- a/test/decompiler/reference/engine/camera/pov-camera_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera_REF.gc @@ -277,7 +277,7 @@ ) ) (initialize-skeleton self arg1 '()) - (logior! (-> self draw status) 32) + (logior! (-> self draw status) (draw-status drwf05)) (logior! (-> self skel status) 1) (set! (-> self anim-name) arg2) (cond diff --git a/test/decompiler/reference/engine/collide/collide-frag_REF.gc b/test/decompiler/reference/engine/collide/collide-frag_REF.gc index b1ce7c4c9e..8ca1dbddc7 100644 --- a/test/decompiler/reference/engine/collide/collide-frag_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-frag_REF.gc @@ -8,7 +8,7 @@ ;; definition for method 10 of type drawable-tree-collide-fragment ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 drawable-tree-collide-fragment) (arg1 display-frame)) (when *display-render-collision* (dotimes (s4-0 (-> obj length)) (draw (-> obj data s4-0) (-> obj data s4-0) arg1) @@ -88,14 +88,17 @@ ;; definition for method 10 of type collide-fragment ;; INFO: Return type mismatch int vs none. -(defmethod draw collide-fragment ((obj collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw collide-fragment ((obj collide-fragment) (arg0 collide-fragment) (arg1 display-frame)) 0 (none) ) ;; definition for method 10 of type drawable-inline-array-collide-fragment ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) + (arg0 drawable-inline-array-collide-fragment) + (arg1 display-frame) + ) (dotimes (s4-0 (-> obj length)) (let ((s3-0 (-> obj data s4-0))) (if (sphere-cull (-> s3-0 bsphere)) diff --git a/test/decompiler/reference/engine/data/art-h_REF.gc b/test/decompiler/reference/engine/data/art-h_REF.gc index 54059c6ac6..8697ee5884 100644 --- a/test/decompiler/reference/engine/data/art-h_REF.gc +++ b/test/decompiler/reference/engine/data/art-h_REF.gc @@ -390,10 +390,10 @@ ;; definition of type draw-control (deftype draw-control (basic) - ((status uint8 :offset-assert 4) + ((status draw-status :offset-assert 4) (matrix-type uint8 :offset-assert 5) (data-format uint8 :offset-assert 6) - (global-effect uint8 :offset-assert 7) + (global-effect draw-effect :offset-assert 7) (art-group art-group :offset-assert 8) (jgeo art-joint-geo :offset-assert 12) (mgeo merc-ctrl :offset-assert 16) diff --git a/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc index 66ae515de2..b406bcc7c9 100644 --- a/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc @@ -39,7 +39,7 @@ ;; definition for method 10 of type drawable-tree-actor ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-tree-actor ((obj drawable-tree-actor) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-actor ((obj drawable-tree-actor) (arg0 drawable-tree-actor) (arg1 display-frame)) 0 (none) ) diff --git a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc index 82787864a0..0f3ca527e9 100644 --- a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc @@ -42,7 +42,7 @@ ;; definition for method 10 of type drawable-tree-ambient ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-tree-ambient ((obj drawable-tree-ambient) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-ambient ((obj drawable-tree-ambient) (arg0 drawable-tree-ambient) (arg1 display-frame)) 0 (none) ) diff --git a/test/decompiler/reference/engine/draw/drawable-group_REF.gc b/test/decompiler/reference/engine/draw/drawable-group_REF.gc index 49eab4460c..db0694f3c3 100644 --- a/test/decompiler/reference/engine/draw/drawable-group_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-group_REF.gc @@ -67,11 +67,11 @@ ;; definition for method 10 of type drawable-group ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-group ((obj drawable-group) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-group ((obj drawable-group) (arg0 drawable-group) (arg1 display-frame)) (when (vis-cull (-> obj id)) (when (sphere-cull (-> obj bsphere)) (dotimes (s3-0 (-> obj length)) - (draw (-> obj data s3-0) (-> (the-as drawable-group arg0) data s3-0) arg1) + (draw (-> obj data s3-0) (-> arg0 data s3-0) arg1) ) ) ) diff --git a/test/decompiler/reference/engine/draw/drawable-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-h_REF.gc index 50378bbd99..35330cb23c 100644 --- a/test/decompiler/reference/engine/draw/drawable-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-h_REF.gc @@ -11,7 +11,7 @@ :flag-assert #x1200000020 (:methods (login (_type_) _type_ 9) - (draw (_type_ drawable display-frame) none 10) + (draw (_type_ _type_ display-frame) none 10) (collide-with-box (_type_ int collide-list) none 11) (collide-y-probe (_type_ int collide-list) none 12) (collide-ray (_type_ int collide-list) none 13) diff --git a/test/decompiler/reference/engine/draw/drawable-inline-array_REF.gc b/test/decompiler/reference/engine/draw/drawable-inline-array_REF.gc index b270655c7c..e538b96f7a 100644 --- a/test/decompiler/reference/engine/draw/drawable-inline-array_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-inline-array_REF.gc @@ -13,7 +13,7 @@ ;; definition for method 10 of type drawable-inline-array ;; INFO: Return type mismatch int vs none. -(defmethod draw drawable-inline-array ((obj drawable-inline-array) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-inline-array ((obj drawable-inline-array) (arg0 drawable-inline-array) (arg1 display-frame)) 0 (none) ) diff --git a/test/decompiler/reference/engine/draw/process-drawable_REF.gc b/test/decompiler/reference/engine/draw/process-drawable_REF.gc index 6c9c678155..1542145be3 100644 --- a/test/decompiler/reference/engine/draw/process-drawable_REF.gc +++ b/test/decompiler/reference/engine/draw/process-drawable_REF.gc @@ -272,7 +272,7 @@ (countdown (s5-0 (-> gp-0 length)) (let ((a0-1 (handle->process (-> gp-0 s5-0)))) (if a0-1 - (dummy-17 a0-1) + (dummy-17 (the-as process-drawable a0-1)) ) ) ) @@ -287,7 +287,7 @@ ;; Used lq/sq (defmethod dummy-17 process-drawable ((obj process-drawable)) (cond - ((logtest? (-> obj draw status) 6) + ((logtest? (-> obj draw status) (draw-status drwf01 drwf02)) ) ((zero? (-> obj skel)) (matrix<-transformq+trans! @@ -298,64 +298,53 @@ (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 ((s5-0 (-> obj draw mgeo num-joints))) + (let ((s4-0 (+ s5-0 2))) + (+ s4-0 1) + ((-> obj skel generate-frame-function) + (the-as (inline-array vector) (+ 2416 (the-as int (the-as terrain-context #x70000000)))) + s4-0 + obj + ) + (if (-> obj skel prebind-function) + ((-> obj skel prebind-function) (the-as pointer (+ 2416 #x70000000)) s4-0 obj) ) ) + (dotimes (s4-1 1) + (let* ((v1-25 (-> obj node-list data s4-1)) + (t9-3 (-> v1-25 param0)) + ) + (if t9-3 + ((the-as (function cspace basic basic int) t9-3) v1-25 (-> v1-25 param1) (-> v1-25 param2)) + ) + ) + ) + (dotimes (s4-2 2) + (let* ((a0-15 (-> obj node-list data (+ s4-2 1))) + (a1-5 (+ (* s4-2 64) 2416 #x70000000)) + (t9-4 (-> a0-15 param0)) + ) + (if t9-4 + ((the-as (function cspace pointer none) t9-4) a0-15 (the-as pointer a1-5)) + ) + ) + ) + (let ((s4-3 3)) + (dotimes (s3-0 s5-0) + (let ((a0-17 (-> obj node-list data (+ s3-0 s4-3))) + (a1-7 (+ (* 48 s3-0) 2544 #x70000000)) + ) + (if (-> a0-17 param0) + ((the-as (function cspace matrix none) (-> a0-17 param0)) a0-17 (the-as matrix a1-7)) + (cspace<-parented-transformq-joint! a0-17 (the-as transformq a1-7)) + ) + ) + ) + ) ) + (if (-> obj skel postbind-function) + ((-> obj skel postbind-function) obj) + ) (let ((v1-54 (-> obj draw origin-joint-index))) (if (zero? v1-54) (set! (-> obj draw origin quad) @@ -493,7 +482,7 @@ (set! s3-0 v0-3) ) (let ((v1-26 s3-0)) - (set! (-> v1-26 status) (the-as uint 16)) + (set! (-> v1-26 status) (draw-status drwf04)) (set! (-> v1-26 art-group) s4-0) (set! (-> v1-26 jgeo) (the-as art-joint-geo sv-16)) (set! (-> v1-26 force-lod) -1) @@ -554,7 +543,7 @@ (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) + (logior! (-> s3-0 status) (draw-status drwf07)) (let ((v0-13 (new 'process 'joint-control a2-10))) (set! (-> obj skel) v0-13) (let ((s2-1 v0-13)) @@ -940,8 +929,8 @@ ;; 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))) + (let ((gp-1 (logtest? (-> self draw status) (draw-status drwf04)))) + (logclear! (-> self draw status) (draw-status drwf02 drwf04)) (when (nonzero? (-> self skel)) (dummy-19 self) (when (or (logtest? (-> self skel status) 1) gp-1) diff --git a/test/decompiler/reference/engine/game/crates_REF.gc b/test/decompiler/reference/engine/game/crates_REF.gc index 2c2bdedda7..f8c4e0cd03 100644 --- a/test/decompiler/reference/engine/game/crates_REF.gc +++ b/test/decompiler/reference/engine/game/crates_REF.gc @@ -703,7 +703,7 @@ (case (-> arg3 param 1) (('explode 'darkeco 'eco-yellow 'bonk 'tube 'flut-bonk 'flut-attack 'racer) (send-event arg0 'get-attack-count 1) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (increment-success-for-hint (game-text-id sidekick-speech-hint-crate-steel)) (level-hint-spawn (game-text-id sidekick-speech-crate-steel-break1) @@ -1049,7 +1049,7 @@ (suspend) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (case (-> self look) (('iron) (sound-play-by-name (static-sound-name "icrate-break") (new-sound-id) 1024 0 0 1 #t) @@ -1229,7 +1229,7 @@ ) ) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (drop-pickup (-> self fact) #t self (the-as fact-info #f) 0) (set! (-> self child-count) (+ (process-count self) -1)) (process-entity-status! self (entity-perm-status bit-4) #t) @@ -1374,7 +1374,7 @@ ) (('none) (initialize-skeleton obj *crate-wood-sg* '()) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) ) (else (initialize-skeleton obj *crate-wood-sg* '()) @@ -1702,7 +1702,3 @@ (none) ) ) - - - - diff --git a/test/decompiler/reference/engine/game/generic-obs_REF.gc b/test/decompiler/reference/engine/game/generic-obs_REF.gc index 54eb7c5499..e04f6935a9 100644 --- a/test/decompiler/reference/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs_REF.gc @@ -37,9 +37,9 @@ (if (logtest? (-> (the-as process-drawable s5-0) skel status) 32) (logior! (-> self skel status) 32) ) - (set! (-> self draw status) (logand -7 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01 drwf02)) (if (not (-> self skel root-channel 0 frame-group)) - (logior! (-> self draw status) 4) + (logior! (-> self draw status) (draw-status drwf02)) ) (let* ((s5-1 self) (v1-37 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) manipy)) @@ -48,7 +48,7 @@ ) ) (if (and manipy (not (-> (the-as manipy v1-37) draw?))) - (logior! (-> self draw status) 4) + (logior! (-> self draw status) (draw-status drwf02)) ) ) (dummy-17 self) @@ -65,7 +65,7 @@ ) ) (else - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (ja-post) ) ) @@ -398,8 +398,8 @@ (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) (cond ((-> arg3 param 0) - (let ((v1-47 (logtest? (-> self draw status) 2))) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (let ((v1-47 (logtest? (-> self draw status) (draw-status drwf01)))) + (logclear! (-> self draw status) (draw-status drwf01)) (when v1-47 (cond ((nonzero? (-> self skel)) @@ -418,8 +418,8 @@ ) ) (else - (set! v0-0 (the-as none (logior (-> self draw status) 2))) - (set! (-> self draw status) (the-as uint v0-0)) + (set! v0-0 (the-as none (logior (-> self draw status) (draw-status drwf01)))) + (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) ) @@ -694,14 +694,14 @@ ;; WARN: disable def twice: 82. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 96. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 110. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. -(defbehavior command-get-process camera-tracker ((arg0 object) (arg1 process-drawable)) +(defbehavior command-get-process camera-tracker ((arg0 object) (arg1 process)) (the-as process (cond ((null? arg0) (empty) arg1 ) ((type-type? (rtype-of arg0) process) - (the-as process-drawable arg0) + (the-as process arg0) ) ((= arg0 'target) *target* @@ -710,7 +710,7 @@ (when *target* (let ((v1-6 (-> *target* sidekick))) (if v1-6 - (the-as process-drawable (-> v1-6 0 self)) + (the-as process (-> v1-6 0 self)) ) ) ) @@ -718,68 +718,33 @@ ((= arg0 'parent) (let ((v1-9 (-> self parent))) (if v1-9 - (the-as process-drawable (-> v1-9 0 self)) + (the-as process (-> v1-9 0 self)) ) ) ) ((= arg0 'camera) - (the-as process-drawable *camera*) + *camera* ) ((type-type? (rtype-of arg0) string) - (the-as process-drawable (process-by-ename (the-as string arg0))) + (process-by-ename (the-as string arg0)) ) ((type-type? (-> self type) camera-tracker) (let ((v1-13 self)) (cond ((= arg0 'work) - (let ((v1-14 (-> v1-13 work-process))) - (and (nonzero? (l32-false-check v1-14)) (let ((a0-8 (-> v1-14 process 0))) - (if (= (-> v1-14 pid) (-> a0-8 pid)) - (the-as process-drawable a0-8) - ) - ) - ) - ) + (handle->process (-> v1-13 work-process)) ) ((= arg0 'grab) - (let ((v1-17 (-> v1-13 grab-target))) - (and (nonzero? (l32-false-check v1-17)) (let ((a0-12 (-> v1-17 process 0))) - (if (= (-> v1-17 pid) (-> a0-12 pid)) - (the-as process-drawable a0-12) - ) - ) - ) - ) + (handle->process (-> v1-13 grab-target)) ) ((= arg0 'look-at) - (let ((v1-20 (-> v1-13 look-at-target))) - (and (nonzero? (l32-false-check v1-20)) (let ((a0-16 (-> v1-20 process 0))) - (if (= (-> v1-20 pid) (-> a0-16 pid)) - (the-as process-drawable a0-16) - ) - ) - ) - ) + (handle->process (-> v1-13 look-at-target)) ) ((= arg0 'pov) - (let ((v1-23 (-> v1-13 pov-target))) - (and (nonzero? (l32-false-check v1-23)) (let ((a0-20 (-> v1-23 process 0))) - (if (= (-> v1-23 pid) (-> a0-20 pid)) - (the-as process-drawable a0-20) - ) - ) - ) - ) + (handle->process (-> v1-13 pov-target)) ) ((= arg0 'anim) - (let ((v1-26 (-> v1-13 anim-process))) - (and (nonzero? (l32-false-check v1-26)) (let ((a0-24 (-> v1-26 process 0))) - (if (= (-> v1-26 pid) (-> a0-24 pid)) - (the-as process-drawable a0-24) - ) - ) - ) - ) + (handle->process (-> v1-13 anim-process)) ) (else (empty) @@ -1341,7 +1306,7 @@ ) (cond ((and a0-1 (or (= (-> a0-1 display?) 'special) (= (-> a0-1 display?) 'special-vis))) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (when (nonzero? (-> self skel)) (let ((a0-5 (-> self skel root-channel 0))) (set! (-> a0-5 param 0) 1.0) @@ -1350,13 +1315,13 @@ ) ) ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) (else - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (if (nonzero? (-> self part)) (spawn (-> self part) (-> self root trans)) ) @@ -1369,7 +1334,7 @@ ) ) ) - (when (zero? (logand (-> self draw status) 2)) + (when (zero? (logand (-> self draw status) (draw-status drwf01))) (let ((v1-36 (-> self draw)) (a0-18 (new 'stack-no-clear 'vector)) ) @@ -1451,7 +1416,7 @@ ) ) (dummy-15 obj *lev-string* '()) - (logior! (-> obj draw status) 64) + (logior! (-> obj draw status) (draw-status drwf06)) (if (nonzero? (-> obj draw)) (go med-res-level-idle) ) diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index 68247cd5cc..6733dc2b6e 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -86,7 +86,7 @@ (if (logtest? (process-mask enemy) (-> s5-0 mask)) (set! s4-2 (logior s4-2 1)) ) - (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) 8)) + (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status drwf03))) (set! s4-2 (logior s4-2 2)) ) (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) diff --git a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc index be02486f87..1b478f6098 100644 --- a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc +++ b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc @@ -758,7 +758,7 @@ ;; definition for function process-taskable-clean-up-after-talking (defbehavior process-taskable-clean-up-after-talking process-taskable () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (set! (-> self skel status) (logand -2 (-> self skel status))) (clear-pending-settings-from-process *setting-control* self 'border-mode) (clear-pending-settings-from-process *setting-control* self 'talking) @@ -1491,7 +1491,7 @@ (defmethod draw-npc-shadow process-taskable ((obj process-taskable)) (let ((gp-0 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (dummy-15 gp-0 (-> obj draw origin) -4096.0 4096.0 32768.0) (dummy-14 gp-0) ) diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc index 1583dda87b..7253a21e39 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc @@ -151,7 +151,7 @@ (!= (-> self control unknown-surface00 mode) 'swim) (!= (-> self control unknown-surface00 mode) 'dive) (!= (-> self next-state name) 'target-flop) - (zero? (logand (-> self draw status) 38)) + (zero? (logand (-> self draw status) (draw-status drwf01 drwf02 drwf05))) ) (set! (-> self control shadow-pos quad) (-> self control trans quad)) (find-ground-and-draw-shadow diff --git a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc index b32ad31892..50d36f9aeb 100644 --- a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc @@ -176,8 +176,8 @@ ;; definition of type prototype-shrubbery (deftype prototype-shrubbery (drawable-inline-array) - ((data generic-shrub-fragment 1 :inline :offset-assert 32) - (pad uint32 :offset-assert 64) + ((data shrubbery 1 :inline :offset-assert 32) + (pad uint32 :offset-assert 64) ) :method-count-assert 18 :size-assert #x44 diff --git a/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc b/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc index dddd944826..cc6d5a0d37 100644 --- a/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc @@ -298,10 +298,10 @@ ;; definition for method 3 of type foreground-area (defmethod inspect foreground-area ((obj foreground-area)) (format #t "[~8x] ~A~%" obj 'foreground-area) - (format #t "~Tjoint-work: #~%" (-> obj joint-work)) - (format #t "~Tgeneric-work: #~%" (-> obj joint-work)) - (format #t "~Tbone-mem: #~%" (-> obj joint-work)) - (format #t "~Tshadow-work: #~%" (-> obj joint-work)) + (format #t "~Tjoint-work: #~%" (-> obj bone-mem)) + (format #t "~Tgeneric-work: #~%" (-> obj bone-mem)) + (format #t "~Tbone-mem: #~%" (-> obj bone-mem)) + (format #t "~Tshadow-work: #~%" (-> obj bone-mem)) obj ) diff --git a/test/decompiler/reference/engine/gfx/tfrag/tfrag-methods_REF.gc b/test/decompiler/reference/engine/gfx/tfrag/tfrag-methods_REF.gc index 50befc4f30..ee140a0cc6 100644 --- a/test/decompiler/reference/engine/gfx/tfrag/tfrag-methods_REF.gc +++ b/test/decompiler/reference/engine/gfx/tfrag/tfrag-methods_REF.gc @@ -860,7 +860,7 @@ ;; definition for method 10 of type drawable-tree-tfrag ;; INFO: Return type mismatch drawable-tree-tfrag vs none. -(defmethod draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable-tree-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -874,7 +874,7 @@ ;; definition for method 10 of type drawable-tree-trans-tfrag ;; INFO: Return type mismatch drawable-tree-trans-tfrag vs none. -(defmethod draw drawable-tree-trans-tfrag ((obj drawable-tree-trans-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-trans-tfrag ((obj drawable-tree-trans-tfrag) (arg0 drawable-tree-trans-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* trans-tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -888,7 +888,7 @@ ;; definition for method 10 of type drawable-tree-dirt-tfrag ;; INFO: Return type mismatch drawable-tree-dirt-tfrag vs none. -(defmethod draw drawable-tree-dirt-tfrag ((obj drawable-tree-dirt-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-dirt-tfrag ((obj drawable-tree-dirt-tfrag) (arg0 drawable-tree-dirt-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* dirt-tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -902,7 +902,7 @@ ;; definition for method 10 of type drawable-tree-ice-tfrag ;; INFO: Return type mismatch drawable-tree-ice-tfrag vs none. -(defmethod draw drawable-tree-ice-tfrag ((obj drawable-tree-ice-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-ice-tfrag ((obj drawable-tree-ice-tfrag) (arg0 drawable-tree-ice-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* ice-tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -916,7 +916,7 @@ ;; definition for method 10 of type drawable-tree-lowres-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-tfrag vs none. -(defmethod draw drawable-tree-lowres-tfrag ((obj drawable-tree-lowres-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-lowres-tfrag ((obj drawable-tree-lowres-tfrag) (arg0 drawable-tree-lowres-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* lowres-tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) @@ -930,7 +930,7 @@ ;; definition for method 10 of type drawable-tree-lowres-trans-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-trans-tfrag vs none. -(defmethod draw drawable-tree-lowres-trans-tfrag ((obj drawable-tree-lowres-trans-tfrag) (arg0 drawable) (arg1 display-frame)) +(defmethod draw drawable-tree-lowres-trans-tfrag ((obj drawable-tree-lowres-trans-tfrag) (arg0 drawable-tree-lowres-trans-tfrag) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* lowres-trans-tfrag-tree-count)) (a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index)) (a1-5 (-> *level* level a1-2)) diff --git a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc index 7376f96660..403ee6c251 100644 --- a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc @@ -106,7 +106,7 @@ ;; definition of type prototype-tie (deftype prototype-tie (drawable-inline-array) - ((data instance-tie 1 :inline :offset-assert 32) + ((data tie-fragment 1 :inline :offset-assert 32) (pad uint32 :offset-assert 96) ) :method-count-assert 18 diff --git a/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc b/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc index a4a1b6016f..5b13bd7f2d 100644 --- a/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc +++ b/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc @@ -153,7 +153,7 @@ ;; definition for method 10 of type bsp-header ;; Used lq/sq -(defmethod draw bsp-header ((obj bsp-header) (other-draw drawable) (disp-frame display-frame)) +(defmethod draw bsp-header ((obj bsp-header) (other-draw bsp-header) (disp-frame display-frame)) (local-vars (r0-0 uint128) (a3-4 uint128) (a3-5 uint128)) (rlet ((vf16 :class vf) (vf17 :class vf) diff --git a/test/decompiler/reference/engine/gfx/water/water_REF.gc b/test/decompiler/reference/engine/gfx/water/water_REF.gc index 39c00bed1e..09c84cec75 100644 --- a/test/decompiler/reference/engine/gfx/water/water_REF.gc +++ b/test/decompiler/reference/engine/gfx/water/water_REF.gc @@ -922,7 +922,7 @@ (vector-xz-length (-> obj process root transv)) (set! (-> s4-0 y) (-> obj surface-height)) (when (and - (logtest? (-> obj process draw status) 8) + (logtest? (-> obj process draw status) (draw-status drwf03)) (zero? (-> obj process draw cur-lod)) (logtest? #x400000 (-> obj flags)) (logtest? #x800000 (-> obj flags)) diff --git a/test/decompiler/reference/engine/target/logic-target_REF.gc b/test/decompiler/reference/engine/target/logic-target_REF.gc index 7d12de4f37..69573666ce 100644 --- a/test/decompiler/reference/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/engine/target/logic-target_REF.gc @@ -1201,8 +1201,8 @@ ) (when (logtest? (-> self state-flags) 32) (if (< (logand (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) 3) 1) - (logior! (-> self draw status) 2) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) ) (if (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) (-> self control unknown-dword81)) (target-timed-invulnerable-off self) @@ -1481,7 +1481,7 @@ (cond ((and (= (-> self next-state name) 'target-clone-anim) - (zero? (logand (-> self draw status) 2)) + (zero? (logand (-> self draw status) (draw-status drwf01))) (begin (vector<-cspace! gp-0 (-> self node-list data 3)) (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) @@ -1516,7 +1516,7 @@ ((logtest? (-> self control root-prim prim-core action) 8192) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) ) - ((logtest? (-> self draw status) 6) + ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) (else diff --git a/test/decompiler/reference/engine/target/target-h_REF.gc b/test/decompiler/reference/engine/target/target-h_REF.gc index 427dbba381..965d86cde5 100644 --- a/test/decompiler/reference/engine/target/target-h_REF.gc +++ b/test/decompiler/reference/engine/target/target-h_REF.gc @@ -40,6 +40,7 @@ (:states (target-clone-anim handle) (target-death symbol) + target-demo (target-hit-ground symbol) (target-racing-bounce float float symbol) (target-racing-clone-anim handle) @@ -52,6 +53,8 @@ target-racing-grab (target-racing-hit handle attack-info) (target-racing-jump float float symbol) + target-title + target-warp-in ) ) diff --git a/test/decompiler/reference/engine/target/target-util_REF.gc b/test/decompiler/reference/engine/target/target-util_REF.gc index d8277ee568..4a1064868f 100644 --- a/test/decompiler/reference/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/engine/target/target-util_REF.gc @@ -1101,7 +1101,7 @@ ;; definition for function target-timed-invulnerable-off ;; INFO: Return type mismatch int vs none. (defun target-timed-invulnerable-off ((arg0 target)) - (set! (-> arg0 draw status) (logand -3 (-> arg0 draw status))) + (logclear! (-> arg0 draw status) (draw-status drwf01)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) (dummy-53 (-> arg0 control) 2 0 4096) 0 diff --git a/test/decompiler/reference/engine/target/target2_REF.gc b/test/decompiler/reference/engine/target/target2_REF.gc index bbc7549a42..a27c768011 100644 --- a/test/decompiler/reference/engine/target/target2_REF.gc +++ b/test/decompiler/reference/engine/target/target2_REF.gc @@ -3836,7 +3836,7 @@ (cond ((not (-> self control unknown-spoolanim00)) ) - ((zero? (logand (-> self draw status) 2)) + ((zero? (logand (-> self draw status) (draw-status drwf01))) (TODO-RENAME-30 (-> self control) (the-as vector a1-2)) (matrix->quaternion (-> self control unknown-quaternion00) (-> gp-0 bone transform)) (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) diff --git a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc index 2fcc54bc3f..43d423e7c8 100644 --- a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc @@ -423,7 +423,7 @@ (suspend) (set! v1-3 (or (not *target*) (process-grab? *target*))) ) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (ja-channel-set! 1) (let ((gp-0 (-> self skel root-channel 0))) (joint-control-channel-group-eval! diff --git a/test/decompiler/reference/levels/beach/bird-lady_REF.gc b/test/decompiler/reference/levels/beach/bird-lady_REF.gc index 0241de9247..c5de87acca 100644 --- a/test/decompiler/reference/levels/beach/bird-lady_REF.gc +++ b/test/decompiler/reference/levels/beach/bird-lady_REF.gc @@ -53,7 +53,7 @@ (defmethod draw-npc-shadow bird-lady ((obj bird-lady)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc index a0a2e6a52d..71e1ac5efd 100644 --- a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc @@ -761,9 +761,7 @@ lurkerworm-default-post-behavior (set! (-> obj skel prebind-function) (the-as (function pointer int process-drawable none) lurkerworm-prebind-function) ) - (set! (-> obj skel postbind-function) - (the-as (function pointer int process-drawable none) lurkerworm-joint-callback) - ) + (set! (-> obj skel postbind-function) lurkerworm-joint-callback) (set! (-> obj root-override nav-radius) 12288.0) (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) (go lurkerworm-idle) diff --git a/test/decompiler/reference/levels/beach/mayor_REF.gc b/test/decompiler/reference/levels/beach/mayor_REF.gc index 7740ba7d7c..4c1c3a559b 100644 --- a/test/decompiler/reference/levels/beach/mayor_REF.gc +++ b/test/decompiler/reference/levels/beach/mayor_REF.gc @@ -50,7 +50,7 @@ (defmethod draw-npc-shadow mayor ((obj mayor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/beach/sculptor_REF.gc b/test/decompiler/reference/levels/beach/sculptor_REF.gc index 79fca309c3..5840f0420a 100644 --- a/test/decompiler/reference/levels/beach/sculptor_REF.gc +++ b/test/decompiler/reference/levels/beach/sculptor_REF.gc @@ -61,7 +61,7 @@ (defmethod draw-npc-shadow sculptor ((obj sculptor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc index ccdf096d16..c54545d3ad 100644 --- a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc @@ -114,8 +114,8 @@ (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))) + (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) ) (suspend) ) @@ -192,7 +192,7 @@ (the-as (function none :behavior citb-arm) rider-trans) :post (behavior () - (if (logtest? (-> self draw status) 2) + (if (logtest? (-> self draw status) (draw-status drwf01)) (clear-collide-with-as (-> self root-override)) (restore-collide-with-as (-> self root-override)) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc index 194ca673bf..a49c30a31a 100644 --- a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc @@ -47,7 +47,7 @@ ;; definition for function citb-sagecage-draw-bars ;; INFO: Return type mismatch int vs none. (defbehavior citb-sagecage-draw-bars citb-sagecage () - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (let ((gp-0 (-> self node-list data 3 bone transform)) (s5-0 (new 'stack-no-clear 'vector)) ) @@ -603,7 +603,7 @@ (defmethod draw-npc-shadow red-sagecage ((obj red-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -735,7 +735,7 @@ (defmethod draw-npc-shadow blue-sagecage ((obj blue-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -872,7 +872,7 @@ (defmethod draw-npc-shadow yellow-sagecage ((obj yellow-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) 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 7ffb987745..94df1408e9 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 @@ -147,12 +147,12 @@ (set! (-> self root-override trans y) (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (ja-post) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) - (let ((v1-14 (logand -3 (-> self draw status))) + (let ((v1-14 (logclear (-> self draw status) (draw-status drwf01))) (a0-5 (-> self draw)) ) (set! (-> a0-5 status) v1-14) diff --git a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc index 17f918dad3..c6c7efe3f1 100644 --- a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc @@ -372,11 +372,11 @@ (the-as (function none :behavior citb-stair-plat) #f) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (not (-> self rise)) (suspend) ) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) (set! (-> self state-time) (-> *display* base-frame-counter)) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self delay))) @@ -1343,7 +1343,7 @@ ) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (clear-collide-with-as (-> self root-override)) (while #t (suspend) @@ -1358,7 +1358,7 @@ (the-as (function none :behavior citb-exit-plat) rider-trans) :code (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (restore-collide-with-as (-> self root-override)) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t diff --git a/test/decompiler/reference/levels/common/basebutton_REF.gc b/test/decompiler/reference/levels/common/basebutton_REF.gc index 32ad97db00..11fc373a86 100644 --- a/test/decompiler/reference/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/levels/common/basebutton_REF.gc @@ -575,7 +575,7 @@ ) (case (-> self level) (('citadel 'lavatube) - (while (and *target* (zero? (logand (-> *target* draw status) 2))) + (while (and *target* (zero? (logand (-> *target* draw status) (draw-status drwf01)))) (suspend) ) ) @@ -629,8 +629,8 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) 2)))) - (set! (-> self draw status) (the-as uint v0-0)) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) ) diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index 3835777cbc..4411044933 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -312,7 +312,7 @@ eco-door-event-handler (set! (-> v1-6 num-func) num-func-identity) (set! (-> v1-6 frame-num) (the float (+ (-> v1-6 frame-group data 0 length) -1))) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (suspend) (dummy-47 (-> self root-override)) (ja-post) @@ -346,7 +346,7 @@ eco-door-event-handler :code (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (let ((gp-0 (new 'stack 'overlaps-others-params))) (set! (-> gp-0 options) (the-as uint 1)) (set! (-> gp-0 tlist) #f) diff --git a/test/decompiler/reference/levels/common/blocking-plane_REF.gc b/test/decompiler/reference/levels/common/blocking-plane_REF.gc index 3610c2efa0..a6afdbf580 100644 --- a/test/decompiler/reference/levels/common/blocking-plane_REF.gc +++ b/test/decompiler/reference/levels/common/blocking-plane_REF.gc @@ -86,7 +86,7 @@ ) ) (initialize-skeleton self *ef-plane-sg* '()) - (logior! (-> self draw status) 32) + (logior! (-> self draw status) (draw-status drwf05)) (go blocking-plane-idle) (none) ) diff --git a/test/decompiler/reference/levels/common/mistycannon_REF.gc b/test/decompiler/reference/levels/common/mistycannon_REF.gc index 8fc5d63414..a8cd18881a 100644 --- a/test/decompiler/reference/levels/common/mistycannon_REF.gc +++ b/test/decompiler/reference/levels/common/mistycannon_REF.gc @@ -977,7 +977,7 @@ ) (set! (-> self root-override root-prim prim-core offense) 4) (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8)) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (if (logtest? (-> self root-override status) 1) (draw-shadow (-> self root-override shadow-pos) @@ -2107,9 +2107,7 @@ (set! (-> obj skel prebind-function) (the-as (function pointer int process-drawable none) mistycannon-prebind-function) ) - (set! (-> obj skel postbind-function) - (the-as (function pointer int process-drawable none) mistycannon-postbind-function) - ) + (set! (-> obj skel postbind-function) mistycannon-postbind-function) (set! (-> obj fact-info-override) (new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) ) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index 66b36a73e6..2a2abdf851 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -257,7 +257,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) ) (none) @@ -808,11 +808,11 @@ nav-enemy-default-event-handler (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) (vector-vector-distance (-> obj collide-info trans) (camera-pos)) ) - (or (logtest? (-> obj draw status) 8) (!= (-> obj next-state name) 'nav-enemy-idle)) + (or (logtest? (-> obj draw status) (draw-status drwf03)) (!= (-> obj next-state name) 'nav-enemy-idle)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) @@ -845,7 +845,7 @@ nav-enemy-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) 8) + (logtest? (-> self draw status) (draw-status drwf03)) ) (go-virtual nav-enemy-patrol) ) @@ -907,7 +907,7 @@ nav-enemy-default-event-handler (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) 8)) + (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status drwf03))) (set! (-> self free-time) (-> *display* base-frame-counter)) ) (if (or diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index 1b8e7c50b3..19c4781e74 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -112,7 +112,7 @@ nav-enemy-default-event-handler (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) @@ -284,7 +284,7 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (cond @@ -308,7 +308,7 @@ nav-enemy-default-event-handler (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) (and - (logtest? (-> self draw status) 2) + (logtest? (-> self draw status) (draw-status drwf01)) (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) ) ) @@ -351,7 +351,7 @@ nav-enemy-default-event-handler (ja-post) (suspend) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (anim-loop) (none) ) @@ -539,7 +539,7 @@ nav-enemy-default-event-handler ) ) (sharkey-reset-position) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (go-virtual nav-enemy-idle) (none) ) diff --git a/test/decompiler/reference/levels/common/water-anim_REF.gc b/test/decompiler/reference/levels/common/water-anim_REF.gc index 654281fee1..d62402f363 100644 --- a/test/decompiler/reference/levels/common/water-anim_REF.gc +++ b/test/decompiler/reference/levels/common/water-anim_REF.gc @@ -944,8 +944,8 @@ ) ) (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) - (logior! (-> self draw status) 2) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status drwf01)) ) (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) (update! (-> self sound)) 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 6d0a11db45..b5637c780a 100644 --- a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc @@ -467,10 +467,14 @@ ;; failed to figure out what this is: (defstate green-eco-lurker-wait-to-appear (green-eco-lurker) :enter - (behavior () (logior! (-> self draw status) 2) (clear-collide-with-as (-> self collide-info)) (none)) + (behavior () + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self collide-info)) + (none) + ) :exit (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (restore-collide-with-as (-> self collide-info)) (none) ) @@ -494,31 +498,33 @@ ;; definition for method 53 of type green-eco-lurker ;; INFO: Return type mismatch int vs symbol. (defmethod dummy-53 green-eco-lurker ((obj green-eco-lurker)) - (the-as symbol (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) - (let ((f0-0 (-> obj appear-dest y)) - (v1-7 (-> obj draw shadow-ctrl)) - ) - (let ((a0-1 v1-7)) - (set! (-> a0-1 settings flags) (logand -33 (-> a0-1 settings flags))) - ) - 0 - (let ((a0-3 v1-7)) - (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) - ) - 0 - (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) - ) - 0 - ) - (else - (let ((v1-9 (-> obj draw shadow-ctrl))) - (logior! (-> v1-9 settings flags) 32) - ) - 0 - ) - ) + (the-as + symbol + (cond + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + (let ((f0-0 (-> obj appear-dest y)) + (v1-7 (-> obj draw shadow-ctrl)) + ) + (let ((a0-1 v1-7)) + (set! (-> a0-1 settings flags) (logand -33 (-> a0-1 settings flags))) + ) + 0 + (let ((a0-3 v1-7)) + (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) + ) + 0 + (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) + ) + 0 + ) + (else + (let ((v1-9 (-> obj draw shadow-ctrl))) + (logior! (-> v1-9 settings flags) 32) ) + 0 + ) + ) + ) ) ;; failed to figure out what this is: diff --git a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc index 24b0392e12..cb97a7cb4b 100644 --- a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc +++ b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc @@ -654,7 +654,7 @@ (behavior () (send-event (ppointer->process (-> self parent)) 'untrigger (-> self angle-bit)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) (suspend) @@ -909,7 +909,7 @@ (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-loop!) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (until (not (-> self child)) (suspend) ) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc index 1c20fe4fb4..ffecc1e37d 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc @@ -456,12 +456,12 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (ja-post) (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) (suspend) ) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (let ((v1-12 (-> self skel root-channel 0))) (set! (-> v1-12 num-func) num-func-identity) (set! (-> v1-12 frame-num) 0.0) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc index e71ff3fac8..11d5b66083 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc @@ -312,7 +312,7 @@ (-> s5-1 ppointer) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (cond ((or arg0 (and *target* (< (-> (target-pos 0) y) (+ 40960.0 (-> self entity extra trans y))))) (if *target* @@ -754,7 +754,7 @@ (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) (the-as int arg3)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 664) self)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (go greenshot-idle) (none) ) @@ -857,7 +857,7 @@ (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (sound-play-by-name (static-sound-name "red-explode") (new-sound-id) 1024 0 0 1 #t) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (quaternion-identity! (-> self root-override quat)) (set! (-> self ring radius-secondary) 3072.0) (set! (-> self ring origin quad) (-> self root-override trans quad)) @@ -1039,7 +1039,7 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 647) self)) (set! (-> self shot-particle) (create-launch-control (-> *part-group-id-table* 665) self)) (set! (-> self test-particle) (create-launch-control (-> *part-group-id-table* 679) self)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (set! (-> self sound) (new 'process 'ambient-sound @@ -1150,7 +1150,7 @@ ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) (the-as int arg3)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 652) self)) diff --git a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc index e6f53c5b4a..6b206405d1 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc @@ -750,14 +750,14 @@ (defstate robotboss-white-eco-movie (robotboss) :enter (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (set! (-> self children-spawned) 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-post) (none) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (spool-push *art-control* "green-sagecage-daxter-sacrifice" 0 self (the-as float -1.0)) diff --git a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc index 7c34c57306..feb641d9d5 100644 --- a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc @@ -228,7 +228,7 @@ (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) (go-virtual wait-for-return) ) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (level-hint-spawn (game-text-id flutflut-reminder) diff --git a/test/decompiler/reference/levels/jungle/darkvine_REF.gc b/test/decompiler/reference/levels/jungle/darkvine_REF.gc index b2b9b3340e..ebe0caef6d 100644 --- a/test/decompiler/reference/levels/jungle/darkvine_REF.gc +++ b/test/decompiler/reference/levels/jungle/darkvine_REF.gc @@ -40,13 +40,13 @@ (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) 8) + (logtest? (-> obj draw status) (draw-status drwf03)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) diff --git a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc index b223160892..a6e6926c48 100644 --- a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc +++ b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc @@ -946,7 +946,7 @@ (defmethod draw-npc-shadow fisher ((obj fisher)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc index 3cfbd38d21..2e9ffcb1d3 100644 --- a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc @@ -1247,7 +1247,7 @@ (defbehavior periscope-draw-beam-impact periscope () (when (periscope-has-power-input?) (update! (-> self sound)) - (if (logtest? (-> self draw status) 8) + (if (logtest? (-> self draw status) (draw-status drwf03)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) @@ -1491,7 +1491,7 @@ :exit (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -1508,7 +1508,7 @@ (ja-post) (suspend) (dummy-47 (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) @@ -1777,7 +1777,7 @@ (defstate periscope-player-control (periscope) :exit (behavior () - (set! (-> self reflector 0 draw status) (logand -3 (-> self reflector 0 draw status))) + (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -1891,7 +1891,7 @@ (set! (-> gp-0 vector 3 quad) a2-2) ) (send-event *camera* 'change-state cam-periscope 0) - (logior! (-> self reflector 0 draw status) 2) + (logior! (-> self reflector 0 draw status) (draw-status drwf01)) (suspend) (while #t (if (not (-> self aligned?)) @@ -1920,7 +1920,7 @@ (periscope-crosshair) (suspend) ) - (set! (-> self reflector 0 draw status) (logand -3 (-> self reflector 0 draw status))) + (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -2255,7 +2255,7 @@ (while #t (draw-power-beam gp-0 (-> self beam-end)) (update! (-> self sound)) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) diff --git a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc index 3c4f82cba6..3c218b3a75 100644 --- a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc @@ -74,7 +74,7 @@ (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) + (when (logtest? (-> self draw status) (draw-status drwf03)) (cond ((> (-> self draw cur-lod) 0) (ja-post) @@ -671,7 +671,7 @@ (ja-post) (while #t (suspend) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (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!) @@ -1302,7 +1302,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 1) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) @@ -1366,7 +1366,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 0) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (process-entity-status! self (entity-perm-status complete) #t) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) @@ -1387,7 +1387,7 @@ ) (suspend) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) diff --git a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc index e84fe8524b..ae451910bf 100644 --- a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc @@ -393,7 +393,7 @@ junglesnake-default-event-handler (set! (-> self track-player-tilt) #f) (set! (-> self des-ry) (-> self ry)) (set! (-> self des-tilt) (-> self tilt)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -419,12 +419,10 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (set! (-> self track-player-ry) #f) (set! (-> self track-player-tilt) #f) - (set! (-> self skel postbind-function) - (the-as (function pointer int process-drawable none) junglesnake-joint-callback) - ) + (set! (-> self skel postbind-function) junglesnake-joint-callback) (set! (-> self refractory-delay) 0) 0 (none) diff --git a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc index 1fb13fc605..b69e114fec 100644 --- a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc @@ -328,7 +328,7 @@ baby-spider-default-event-handler ;; definition for method 53 of type baby-spider (defmethod dummy-53 baby-spider ((obj baby-spider)) (cond - ((logtest? (-> obj draw status) 8) + ((logtest? (-> obj draw status) (draw-status drwf03)) (set! (-> obj last-visible-time) (-> *display* base-frame-counter)) (return #f) ) @@ -398,7 +398,7 @@ baby-spider-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) 8) + (logtest? (-> self draw status) (draw-status drwf03)) ) (go-virtual nav-enemy-patrol) ) diff --git a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc index 62e410a0d0..97e6a5708a 100644 --- a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc +++ b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc @@ -602,7 +602,7 @@ (suspend) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (dummy-20 self) (if (-> self underwater?) (sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t) @@ -666,7 +666,7 @@ ) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (if (not (task-complete? *game-info* (-> self entity extra perm task))) (birth-pickup-at-point (-> self root-override trans) diff --git a/test/decompiler/reference/levels/maincave/gnawer_REF.gc b/test/decompiler/reference/levels/maincave/gnawer_REF.gc index a28eb30690..f2eff91ef6 100644 --- a/test/decompiler/reference/levels/maincave/gnawer_REF.gc +++ b/test/decompiler/reference/levels/maincave/gnawer_REF.gc @@ -550,7 +550,7 @@ (defmethod dummy-23 gnawer ((obj gnawer)) (when (not (-> obj hidden?)) (set! (-> obj hidden?) #t) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) (logclear! (-> obj mask) (process-mask attackable)) (set! (-> obj skel postbind-function) #f) (set! (-> obj root-override trans quad) (-> obj post-trans quad)) @@ -564,15 +564,13 @@ ) ;; definition for method 26 of type gnawer -;; INFO: Return type mismatch uint vs none. +;; INFO: Return type mismatch draw-status vs none. (defmethod dummy-26 gnawer ((obj gnawer)) (when (-> obj hidden?) (set! (-> obj hidden?) #f) (restore-collide-with-as (-> obj root-override)) - (set! (-> obj skel postbind-function) - (the-as (function pointer int process-drawable none) gnawer-joint-callback) - ) - (set! (-> obj draw status) (logand -3 (-> obj draw status))) + (set! (-> obj skel postbind-function) gnawer-joint-callback) + (logclear! (-> obj draw status) (draw-status drwf01)) ) (none) ) @@ -1505,7 +1503,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (process-entity-status! self (entity-perm-status complete) #t) (dummy-27 self) (let ((v1-10 (-> self entity extra perm))) @@ -1646,7 +1644,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (case (get-reminder (get-task-control (game-task cave-gnawers)) 3) (((-> self gnawer-id)) (when (not (task-complete? *game-info* (-> self entity extra perm task))) diff --git a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc index 068b8bc68a..a511a26902 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc @@ -208,7 +208,7 @@ ;; Used lq/sq (defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) (a2-1 (new 'stack-no-clear 'vector)) @@ -419,7 +419,7 @@ (defstate mother-spider-egg-hatch (mother-spider-egg) :trans (behavior () - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8)) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> self fall-dest quad)) (compute-and-draw-shadow @@ -611,7 +611,7 @@ :code (behavior () (send-event (ppointer->process (-> self parent-override)) 'untrigger) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (let ((v1-8 (-> self draw shadow-ctrl))) (logior! (-> v1-8 settings flags) 32) ) diff --git a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc index 67372f09ad..7abfcab5c9 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc @@ -195,7 +195,7 @@ (defstate wait-for-children (mother-spider) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (until (not (-> self child)) (suspend) ) @@ -391,8 +391,8 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) 2)))) - (set! (-> self draw status) (the-as uint v0-0)) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) ) @@ -458,7 +458,7 @@ ;; Used lq/sq (defmethod TODO-RENAME-24 mother-spider ((obj mother-spider)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -875,21 +875,19 @@ ) 0 (set! (-> self mode) (the-as uint 0)) - (set! (-> self skel postbind-function) (the-as (function pointer int process-drawable none) 0)) + (set! (-> self skel postbind-function) (the-as (function process-drawable none) 0)) (clear-collide-with-as (-> self root-override)) (shut-down! (-> self neck)) (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (none) ) :exit (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self skel postbind-function) - (the-as (function pointer int process-drawable none) mother-spider-full-joint-callback) - ) + (set! (-> self skel postbind-function) mother-spider-full-joint-callback) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -1809,7 +1807,7 @@ (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) #f) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (-> self child) (suspend) ) @@ -1905,7 +1903,7 @@ (or (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) diff --git a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc index ca87df7c58..c13ddc445a 100644 --- a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc +++ b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc @@ -355,13 +355,15 @@ ;; definition of type quicksandlurker-missile (deftype quicksandlurker-missile (process-drawable) - ((parent-override (pointer quicksandlurker) :offset 12) - (root-override collide-shape-moving :offset 112) + ((root-override collide-shape-moving :offset 112) ) :heap-base #x40 :method-count-assert 20 :size-assert #xb0 :flag-assert #x14004000b0 + (:states + quicksandlurker-missile-impact + ) ) ;; definition for method 3 of type quicksandlurker-missile @@ -408,7 +410,7 @@ ) ) ) - (send-event (ppointer->process (-> self parent-override)) 'victory) + (send-event (ppointer->process (-> self parent)) 'victory) (go quicksandlurker-missile-impact) ) ) @@ -535,7 +537,9 @@ (set! (-> self root-override) s5-0) ) (set! (-> self root-override trans quad) (-> arg0 position quad)) - (set! (-> self root-override quat vec quad) (-> self parent-override 0 root-override quat vec quad)) + (set! (-> self root-override quat vec quad) + (-> (the-as process-drawable (-> self parent 0)) root quat vec quad) + ) (vector-identity! (-> self root-override scale)) (set! (-> self root-override transv quad) (-> arg0 velocity quad)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 198) self)) @@ -545,7 +549,7 @@ ;; definition for function spawn-quicksandlurker-missile ;; INFO: Return type mismatch int vs none. -(defun spawn-quicksandlurker-missile ((arg0 quicksandlurker) (arg1 vector) (arg2 vector) (arg3 entity)) +(defun spawn-quicksandlurker-missile ((arg0 process) (arg1 vector) (arg2 vector) (arg3 entity)) (let ((s5-0 (new 'stack-no-clear 'quicksandlurker-missile-init-data))) (set! (-> s5-0 position) arg1) (set! (-> s5-0 velocity) arg2) @@ -577,6 +581,15 @@ :method-count-assert 20 :size-assert #xd4 :flag-assert #x14007000d4 + (:states + quicksandlurker-attack + quicksandlurker-die + quicksandlurker-hide + quicksandlurker-popup + quicksandlurker-track + quicksandlurker-victory + quicksandlurker-wait + ) ) ;; definition for method 3 of type quicksandlurker @@ -704,9 +717,9 @@ :event (the-as (function process int symbol event-message-block object :behavior quicksandlurker) #f) :enter - (behavior () (logior! (-> self draw status) 2) (none)) + (behavior () (logior! (-> self draw status) (draw-status drwf01)) (none)) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (if (and @@ -895,7 +908,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (+! s4-0 1) (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) 8) + (if (logtest? (-> self draw status) (draw-status drwf03)) (go quicksandlurker-attack) ) ) diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index 2583f56561..7956ac7bd6 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -79,9 +79,9 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) 32))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) (set! (-> self draw status) v0-0) - v0-0 + (the-as uint v0-0) ) ) ) @@ -460,7 +460,7 @@ ) (when (-> obj draw shadow) (when (or - (logtest? (-> obj draw status) 8) + (logtest? (-> obj draw status) (draw-status drwf03)) (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) ) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) @@ -557,7 +557,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) @@ -808,7 +808,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status bit-3) #t) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans @@ -1041,9 +1041,9 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) 32))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) (set! (-> self draw status) v0-0) - v0-0 + (the-as uint v0-0) ) ) ) @@ -1317,7 +1317,7 @@ ) ) :exit - (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) (none)) + (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) :trans (behavior () (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) diff --git a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc index 0139f8e4f6..94bb9630fc 100644 --- a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc +++ b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc @@ -676,7 +676,7 @@ ) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) @@ -720,7 +720,7 @@ ) :code (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (while #t (suspend) ) diff --git a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc index 1a4b4deab4..03661ec277 100644 --- a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc +++ b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc @@ -212,7 +212,7 @@ (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (until (not (-> self child)) (suspend) ) @@ -294,7 +294,7 @@ (joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (until (not (-> self child)) (suspend) ) diff --git a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc index e3c276f9e2..8afa30e03e 100644 --- a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc @@ -677,7 +677,7 @@ ) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (clear-collide-with-as (-> self root-override)) (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) (transform-post) @@ -703,7 +703,7 @@ (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))) + (logclear! (-> self draw status) (draw-status drwf01)) (restore-collide-with-as (-> self root-override)) (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) diff --git a/test/decompiler/reference/levels/sunken/bully_REF.gc b/test/decompiler/reference/levels/sunken/bully_REF.gc index 3f104f41a7..6293f2c63c 100644 --- a/test/decompiler/reference/levels/sunken/bully_REF.gc +++ b/test/decompiler/reference/levels/sunken/bully_REF.gc @@ -1056,7 +1056,7 @@ ) ) (increment-success-for-hint (game-text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (-> self child) (suspend) ) diff --git a/test/decompiler/reference/levels/sunken/puffer_REF.gc b/test/decompiler/reference/levels/sunken/puffer_REF.gc index f01a1dcc5e..a0d370dc00 100644 --- a/test/decompiler/reference/levels/sunken/puffer_REF.gc +++ b/test/decompiler/reference/levels/sunken/puffer_REF.gc @@ -183,7 +183,7 @@ ;; Used lq/sq (defmethod dummy-28 puffer ((obj puffer)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -563,7 +563,7 @@ (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) ) ) - (logtest? (-> self draw status) 8) + (logtest? (-> self draw status) (draw-status drwf03)) (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) ) (go puffer-patrol) @@ -607,7 +607,7 @@ (go puffer-idle) ) (cond - ((logtest? (-> self draw status) 8) + ((logtest? (-> self draw status) (draw-status drwf03)) (set! (-> self last-on-screen-time) (the-as uint (-> *display* base-frame-counter))) ) (else @@ -727,8 +727,8 @@ (the-as uint (drop-pickup (-> self fact-info-override) #t *entity-pool* (-> self fact-info-override) 0)) ) ((= v1-0 'death-end) - (let ((v0-0 (logior (-> self draw status) 2))) - (set! (-> self draw status) v0-0) + (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status drwf01))))) + (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) ) diff --git a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc index e0106d7fe4..df27018261 100644 --- a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc @@ -310,13 +310,13 @@ :exit (behavior () (if (-> self on?) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) (none) ) :trans (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) (let* ((v1-5 (-> self root-overlay riders)) (gp-1 (nonzero? (-> v1-5 num-riders))) @@ -338,7 +338,7 @@ ) ) (if (-> self on?) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) (none) ) diff --git a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc index b30f906748..02d040b6c6 100644 --- a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc @@ -268,13 +268,13 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (none) ) :exit (behavior () (restore-collide-with-as (-> self root-override)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (none) ) :trans diff --git a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc index 45e955ab36..600f75bc7a 100644 --- a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc @@ -271,7 +271,7 @@ (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) ) ) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-3 (let ((t9-11 (method-of-type part-tracker activate))) @@ -318,7 +318,7 @@ (until (< (get-current-phase (-> self sync)) 0.5) (suspend) ) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (let ((s5-4 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-4 (let ((t9-18 (method-of-type part-tracker activate))) diff --git a/test/decompiler/reference/levels/village1/assistant_REF.gc b/test/decompiler/reference/levels/village1/assistant_REF.gc index 9ec3c1c0a1..e02ef7678f 100644 --- a/test/decompiler/reference/levels/village1/assistant_REF.gc +++ b/test/decompiler/reference/levels/village1/assistant_REF.gc @@ -55,7 +55,7 @@ (defmethod draw-npc-shadow assistant ((obj assistant)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village1/explorer_REF.gc b/test/decompiler/reference/levels/village1/explorer_REF.gc index b8ec2128b3..a1161ee11b 100644 --- a/test/decompiler/reference/levels/village1/explorer_REF.gc +++ b/test/decompiler/reference/levels/village1/explorer_REF.gc @@ -53,7 +53,7 @@ (defmethod draw-npc-shadow explorer ((obj explorer)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc index 1c4890f057..1074668058 100644 --- a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc +++ b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc @@ -362,8 +362,8 @@ (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))) + (logior! (-> self draw status) (draw-status drwf06)) + (logclear! (-> self draw status) (draw-status drwf06)) ) (none) ) @@ -496,13 +496,13 @@ (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) 8) + (logtest? (-> obj draw status) (draw-status drwf03)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) ) ) @@ -708,7 +708,7 @@ (+! (-> obj next-reflector-trans y) (res-lump-float a0-10 'height-info)) ) ) - (logior! (-> obj draw status) 64) + (logior! (-> obj draw status) (draw-status drwf06)) (go reflector-middle-idle) (none) ) diff --git a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc index 74b4750aca..4321208c6e 100644 --- a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc +++ b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc @@ -90,7 +90,7 @@ (defmethod draw-npc-shadow assistant-levitator ((obj assistant-levitator)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc index d2298bcc6d..6948c849ce 100644 --- a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc +++ b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc @@ -813,7 +813,7 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while #t (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) (if (not (-> self child)) @@ -916,7 +916,7 @@ (-> s4-1 ppointer) ) ) - (logior! (-> self draw status) 32) + (logior! (-> self draw status) (draw-status drwf05)) (let* ((s4-2 (get-process *default-dead-pool* manipy #x4000)) (s4-3 (ppointer->handle (when s4-2 (let ((t9-24 (method-of-type manipy activate))) diff --git a/test/decompiler/reference/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/levels/village2/village2-obs_REF.gc index 730c571a6a..c92d2a7454 100644 --- a/test/decompiler/reference/levels/village2/village2-obs_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-obs_REF.gc @@ -151,10 +151,14 @@ ;; failed to figure out what this is: (defstate pontoon-hidden (pontoon) :enter - (behavior () (logior! (-> self draw status) 2) (clear-collide-with-as (-> self root-overlay)) (none)) + (behavior () + (logior! (-> self draw status) (draw-status drwf01)) + (clear-collide-with-as (-> self root-overlay)) + (none) + ) :exit (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (restore-collide-with-as (-> self root-overlay)) (none) ) @@ -618,7 +622,7 @@ ) :enter (behavior ((arg0 handle)) - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (logclear! (-> self mask) (process-mask actor-pause)) (none) ) @@ -651,7 +655,7 @@ ) ) :enter - (behavior () (logior! (-> self draw status) 2) (none)) + (behavior () (logior! (-> self draw status) (draw-status drwf01)) (none)) :code (behavior () (while #t @@ -781,7 +785,7 @@ (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))) + (logclear! (-> self draw status) (draw-status drwf01)) (set! (-> self root-override trans quad) (-> self entity extra trans quad)) (vector-reset! (-> self draw origin)) (logior! (-> self skel status) 1) @@ -1181,7 +1185,7 @@ (defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) :code (behavior () - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (not (skip-reminder? self)) (suspend) ) @@ -1204,7 +1208,7 @@ (defstate exit-chamber-dummy-idle (exit-chamber-dummy) :code (behavior () - (set! (-> self draw status) (logand -3 (-> self draw status))) + (logclear! (-> self draw status) (draw-status drwf01)) (let ((gp-0 0)) (while (< gp-0 2) (if (skip-reminder? self) @@ -1260,7 +1264,7 @@ ) (set! (-> s5-1 frame-num) 0.0) ) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) (go exit-chamber-dummy-wait-to-appear) (none) ) diff --git a/test/decompiler/reference/levels/village2/warrior_REF.gc b/test/decompiler/reference/levels/village2/warrior_REF.gc index 0a45a45768..79b7f1ada0 100644 --- a/test/decompiler/reference/levels/village2/warrior_REF.gc +++ b/test/decompiler/reference/levels/village2/warrior_REF.gc @@ -50,7 +50,7 @@ (defmethod draw-npc-shadow warrior ((obj warrior)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/assistant-village3_REF.gc b/test/decompiler/reference/levels/village3/assistant-village3_REF.gc index 1cf31d4cf3..e8b127b420 100644 --- a/test/decompiler/reference/levels/village3/assistant-village3_REF.gc +++ b/test/decompiler/reference/levels/village3/assistant-village3_REF.gc @@ -50,7 +50,7 @@ (defmethod draw-npc-shadow assistant-villagec ((obj assistant-villagec)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/miners_REF.gc b/test/decompiler/reference/levels/village3/miners_REF.gc index bb9e21ed06..b80c6125e4 100644 --- a/test/decompiler/reference/levels/village3/miners_REF.gc +++ b/test/decompiler/reference/levels/village3/miners_REF.gc @@ -79,7 +79,7 @@ (defmethod draw-npc-shadow minertall ((obj minertall)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -291,7 +291,7 @@ (defmethod draw-npc-shadow minershort ((obj minershort)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/sage-village3_REF.gc b/test/decompiler/reference/levels/village3/sage-village3_REF.gc index 37cafc3da2..918c795fbb 100644 --- a/test/decompiler/reference/levels/village3/sage-village3_REF.gc +++ b/test/decompiler/reference/levels/village3/sage-village3_REF.gc @@ -337,7 +337,7 @@ (defmethod draw-npc-shadow sage-villagec ((obj sage-villagec)) (let ((v1-1 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags))) (set! (-> v1-1 settings flags) (logand -5 (-> v1-1 settings flags))) (set! (-> v1-1 settings bot-plane w) 20480.0) diff --git a/test/decompiler/reference/levels/village_common/oracle_REF.gc b/test/decompiler/reference/levels/village_common/oracle_REF.gc index 70ec7d6074..6becf3dccd 100644 --- a/test/decompiler/reference/levels/village_common/oracle_REF.gc +++ b/test/decompiler/reference/levels/village_common/oracle_REF.gc @@ -265,7 +265,7 @@ (set! (-> obj tasks) (get-task-control (the-as game-task (-> obj first-task)))) (set! (-> obj right-eye-cell) (the-as handle #f)) (set! (-> obj left-eye-cell) (the-as handle #f)) - (logior! (-> obj draw status) 32) + (logior! (-> obj draw status) (draw-status drwf05)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s5-1 (lambda :behavior oracle ()